7

我有一个具有searchQuery和建议属性的控制器。这些建议来自 AJAX 请求。如何在我的控制器中使建议属性成为一个承诺?

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

1 回答 1

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 方法。剩下的时间他们把它留给你,以防你真的想跟踪承诺。

于 2013-11-15T22:30:03.083 回答