将ember-cli更新为0.1.5后,我收到一个新错误。
var radioList = this.get('radioList').slice(0);
radioList.forEach(function (item) {
item.isSelected = false;
});
this.set('radioList',radioList);
正在观察radioList属性。然而,在上面的场景中,它正在被切片,基本上是创建它的新副本。 为什么我会得到以下错误?
未捕获错误:断言失败:您必须使用Ember.set()来设置
isSelected
属性([object Object])到false
。
答案 0 :(得分:1)
然而,在上面的场景中,它正在被切片,基本上是创建它的新副本。
您正在通过调用slice
方法创建数组副本,但它不是“深层副本” - 原始数据和副本数组中的对象是相同的。您可以在Chrome / FF控制台中查看它:
var array = [{ field: 1 }];
var slicedCopy = array.slice(0);
slicedCopy[0] === array[0]; // => true
我没有深入探索ember的切片版本,但是在你的情况下甚至深度复制也有可能导致相同的结果。因此,只需使用Ember.set
在ember app中设置值即可。 :)