Ember.js 余烬商店。发现承诺未及时兑现

Ember.js 余烬商店。发现承诺未及时兑现,ember.js,Ember.js,我正在将ArrayController与ItemController一起使用,但在使用ItemController中的hotelName和hotelAddress属性之前,我在获取我的store.find承诺方面遇到问题。你知道我如何在返回之前确定商店的发现是否完成了吗?我知道这家商店。找工作。我能看到结果,但时机不对。多谢各位 export default Ember.ArrayController.extend({ itemController: ..., }); export d

我正在将ArrayController与ItemController一起使用,但在使用ItemController中的hotelName和hotelAddress属性之前,我在获取我的store.find承诺方面遇到问题。你知道我如何在返回之前确定商店的发现是否完成了吗?我知道这家商店。找工作。我能看到结果,但时机不对。多谢各位

export default Ember.ArrayController.extend({
    itemController: ...,
});

export default Ember.ObjectController.extend({
    init: function() {
        this._super();
    },
    hotelName: function() {
        var self = this;
        self.store.find('hotel', this.get('hotelId')).then(function(hotel) {
            self.set('hotelName', hotel.get('name'));
        });
    }.property('hotelId'),

    hotelAddress: function() {
        var self = this;
        self.store.find('hotel', this.get('hotelId')).then(function(hotel) {
            self.set('hotelAddress', hotel.get('street'));
        });
    }.property('hotelId')
});

这不是惯用的余烬。您希望在路由中定义模型挂钩,并利用Ember相应地为您实例化适当的控制器这一事实。路由是承诺感知的,因此您可以通过控制器(实际上是模型的代理)访问模型属性,而无需担心承诺何时实现。另一个好处是,模板也支持承诺,ember将在呈现模板之前为您“展开”值。让Ember为您做一些事情,编写更少的代码。那么您说itemController(由ArrayController使用)实际上有一个路由,因此我可以像其他任何控制器一样处理(并设置模型)?那就很容易了。我将尝试并跟进确认/更新。对于arrayController/itemController关系,这似乎不适用。arrayController有自己的模型,而itemController需要查找不同的模型(基于阵列中的信息)。无法调用itemRoute setupController。我将设置一个JSbin戳它。通过ArrayController的itemControllerLookup方法永远不会调用itemRoute。我在想,在这种特殊情况下,调整我的预订模型可能更容易,这样我就不需要我的itemController访问商店来获取更多信息。也许我只是在错误地处理用例。