2013-11-15 60 views
7

我有一个控制器有searchQuery和建议属性。这些建议来自AJAX请求。我如何才能将建议属性作为我控制器中的承诺?基于承诺的财产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')}`); 
    }) 
}); 

回答

9

我假定你的意思,我怎样才能得到结果自许,因为你是返回一个承诺的建议性质。

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

目前只有少数地方,你可以返回/发送一个承诺,Ember的会假设你不想要存储的承诺。模型钩子和transitionTo/transitionToRoute方法。剩下的时间,他们把它留给你,以防你实际上想跟踪承诺。

+1

是的,这就是我正在寻找的,我只是希望我可以返回承诺。 –