store.find所有奇怪的行为

时间:2015-11-16 22:37:08

标签: ember.js ember-data

我在控制器中有以下代码:

ingredients: function() {
    var self = this;
    this.store.findAll('ingredient').then(function() {
        var ingredients = self.get('model').get('ingredientsWithQuantities').map(function(item) {
            return {
                name: self.store.peekRecord('ingredient', item.ingredientId).get('name'), 
                quantity: item.quantity
            };
        });

        self.set('ingredients', ingredients);
    });
}.property('model.ingredientsWithQuantities')

它是与其中一条路线相关的计算属性。如果先前在某处加载 ' 模型,它可以正常工作。但是如果它第一次加载,当调用then函数时,商店中没有数据。

我希望findAll仅在获取数据后才会调用then。我怎么处理这个?

更新

当我将shouldReloadAll() { return true; }添加到我的应用程序RestAdapter时,它可以正常工作,除了一件事。即使数据存在,它实际上也会重新加载。但是在用户会话期间我只需要这种类型的一个请求。

有可能实现下一个行为吗?

当商店中没有数据时 - 然后加载数据和调用函数

当商店中存在数据时 - 然后只需调用函数

1 个答案:

答案 0 :(得分:1)

delete将返回商店中的所有this.store.findAll('ingredient'),然后它会通过对后端的请求更新它,或者我认为它是如何工作的但我不确定为什么它不能那样工作。

解决方案是使用ingredients,它会向this.store.query提出请求。

示例:

backend