使用store.all将项添加到控制器

时间:2014-12-18 09:58:15

标签: ember.js ember-data

我正在使用store.all在我的商店中查找模型的所有当前实例,然后将其设置为我的控制器中的路径模型,如下所示:

model: function() {
    this.store.all('activeShip');
}

这很好用,但是当我为这种类型创建一个新的模型实例时,我有一些奇怪的行为。当我这样做时,它会自动添加到控制器模型中,即使我从不addObject。我已创建a little demo here以了解我的意思。创建记录后,它将包含在模型中并在视图中更新。我认为store.all只运行一次,收集所有记录并完成;在创建新记录时不会继续更新。

这是期望的行为,错误还是我做错了什么?感谢。

编辑:请认为这两个问题与我有关:#2375#2542

1 个答案:

答案 0 :(得分:0)

这是预期的行为,但在您的情况下可能不需要。这实际上是对Ember Data的一个常见批评 - 在变更持续存在之前无法“分叉”模型或RecordArray。

其次,对this.store.all的调用会返回DS.RecordArray,它会在将新记录添加到商店时实际更新。如果您不想显示新记录,请考虑使用return this.store.all('post').filterProperty('isNew', false);之类的内容来阻止它显示新记录。一旦它们持久存储在服务器上,它将显示在数组中,但不会显示在之前。

P.S。除非你return this.store.all('activeShip');(注意返回),否则你实际上并没有“将其设置为模型”。