Ember Data - 在store.pushPayload方法添加新项目后,ArrayController的内容不会重新加载

时间:2015-01-26 12:21:15

标签: ember.js ember-data

我有一个由Ember.ArrayController处理的项目列表。我正在对记录执行一些PATCH操作,如果需要从上下文中更新现有项并添加新项。我正在从服务器发回的所有更改,并使用Store.pushPayload()方法将其推送到商店。

我这样做:

现有记录中的所有更改都会自动更新 - 因此会运行特定项目的观察者。 不幸的是,当我在有效负载中有一个新项目 - 它们没有出现在列表中时 - 不会调用ArrayController.content的观察。

我还尝试通过执行以下操作手动通知ArrayController:

_this.store.pushPayload(response);

var tasksController = _this.get('controllers.tasks');
tasksController.contentDidChangedManually();

在控制器中:

contentDidChangedManually: function() {
    this.set('contentChangedManually', new Date().getTime());
},
filteredContent: function() { // my content filters...       }.property('arrangedContent', 'contentChangedManually')

但是它不起作用,因为在完成有效载荷的推送之前运行了contentDidChangedManually()。不幸的是,Store.pushPayload()没有返回一个promise,所以当新记录准备就绪时我无法运行它。

有人有解决方案吗?提前谢谢。

1 个答案:

答案 0 :(得分:0)

听起来好像您正在使用find加载模型数据,您可能希望使用DS.Store.filter代替返回实时更新记录数组: http://emberjs.com/api/data/classes/DS.Store.html#method_filter