I've got a controller that has a searchQuery
and suggestions property. The suggestions come from an AJAX request. How can I make the suggestions property a promise in my Controller?
app/controllers/application.js
import Ember from 'ember';
const { computed, $ } = Ember;
export default Ember.Controller.extend({
searchQuery: '',
suggestions: computed('searchQuery', function() {
return $.getJSON(`songs/search.json?q=${this.get('searchQuery')}`);
})
});
I assume you mean, how can I get the results from the promise, since you are returning a promise to the suggestions property.
searchQuery: '',
suggestions: [],
suggestionsUpdater: Ember.observer('searchQuery', function(){
var self = this;
Ember.$.getJSON('songs/search.json?q=' + this.get('searchQuery')).then(function(data){
self.set('suggestions', data);
});
})
There are only a few places where you can return/send a promise and ember's going to assume you didn't want to store the promise. The model hook, and transitionTo/transitionToRoute methods. The rest of the time they leave it up to you, in case you actually wanted to keep track of the promise.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With