更新ArrayController的content属性中元素的最佳方法是什么,以便更新任何关联的视图。
目前,我使用以下代码来更新内容但不更新视图
updateContent: function(device) {
for (var index = 0; index < this.content.length; index++) {
if (this.content[index]._id === device._id) {
this.content.splice(index, 1, device);
break;
}
}
}
这样做的最佳方法是什么?
在这种特殊情况下,我正在接收来自服务器的调用,使用soket.io,因为设备状态随着更新视图而改变。
答案 0 :(得分:3)
您搜索的方法名称为replace(可在MutableArray中找到,ArrayProxy继承自。) 请注意,API的不同之处在于您传递要插入的元素数组,例如
this.content.splice(index,1, [设备] );
正如@ebryn所述,数组的拼接没有被覆盖,原始方法确实改变了数组的内容,但是没有通知观察者,视图(由把手处理的DOM变化)可能就是其中之一。
我在版本0.96中检查了这个。
答案 1 :(得分:1)
您没有在内容数组上使用可观察数组方法,这就是视图未更新的原因。
有关可观察数组方法的列表,请参阅Ember.Array / Ember.Enumerable文档: