我有一个由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,所以当新记录准备就绪时我无法运行它。
有人有解决方案吗?提前谢谢。
答案 0 :(得分:0)
听起来好像您正在使用find
加载模型数据,您可能希望使用DS.Store.filter
代替返回实时更新记录数组:
http://emberjs.com/api/data/classes/DS.Store.html#method_filter