Ember Array观察者无法正常工作

时间:2015-09-09 02:14:37

标签: javascript ember.js observers

export default Ember.Object.extend({
    myArray: Ember.A([null,null,null]),
    someFunction: function () {
         console.log('i am triggered');
         myArray[1] = 3;
    }.on('init'),
    hasValue: Ember.observer('myArray.[]', function () {
         console.log('i am changed');
    })
})

这里的错误是什么?虽然总是达到someFunction,但观察者函数永远不会被触发。

1 个答案:

答案 0 :(得分:3)

使用MutableArray#replace

 this.get('myArray').replace(1, 1, [3]);

这意味着:从索引1开始,用1替换1个元素。这将触发定义为myArray.[]的所有必要依赖项和观察者。

我很惊讶您的代码没有吐出ReferenceError,因为您在myArray内引用了未声明的变量someFunction

这是一个方便的功能,我现在无法指责。另外,请注意观察者在初始化期间可能不会触发。