2013-11-15 4 views
7

Possiedo un controller con proprietà searchQuery e suggerimenti. I suggerimenti provengono da una richiesta AJAX. Come posso rendere la proprietà dei suggerimenti una promessa nel mio controller?Proprietà basata su promessa Ember

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')}`); 
    }) 
}); 

risposta

9

suppongo che voi dire, come posso ottenere i risultati dalla promessa, dal momento che si restituisce una promessa alla proprietà suggerimenti.

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); 
    }); 
}) 

Ci sono solo pochi posti dove si può rinviare/inviare una promessa e brace di intenzione di assumere non hai desidera memorizzare la promessa. I metodi hook del modello e transitionTo/transitionToRoute. Il resto del tempo lasciano a te, nel caso in cui in realtà volessi tenere traccia della promessa.

+1

Sì, questo è quello che sto cercando, mi aspettavo solo che potessi restituire la promessa. –