未捕获错误:断言失败:您必须使用Ember.set()进行设置

时间:2015-01-07 07:26:23

标签: javascript ember.js set

将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

1 个答案:

答案 0 :(得分:1)

  

然而,在上面的场景中,它正在被切片,基本上是创建它的新副本。

您正在通过调用slice方法创建数组副本,但它不是“深层副本” - 原始数据和副本数组中的对象是相同的。您可以在Chrome / FF控制台中查看它:

var array = [{ field: 1 }];
var slicedCopy = array.slice(0);
slicedCopy[0] === array[0]; // => true

我没有深入探索ember的切片版本,但是在你的情况下甚至深度复制也有可能导致相同的结果。因此,只需使用Ember.set在ember app中设置值即可。 :)