基于Promise的属性Ember

7

我有一个控制器,其中包含searchQuery和属性。建议来自AJAX请求。如何使我的控制器中的建议属性成为一个promise?

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')}`);
  })
});
1个回答

9

我猜你的意思是,如何从promise中获取结果,因为你正在将一个promise返回给suggestions属性。

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

只有在返回Promise的几个位置(model hook, transitionTo/transitionToRoute方法)中,Ember会默认你并不想存储这个Promise。其余情况下,如果你需要追踪Promise的状态,就需要自己来处理。


1
是的,那就是我要找的,我只是希望能够返回 Promise。 - Jon Koops

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接