Ember属性无法使用多个依赖项正确更新

时间:2015-07-23 23:04:54

标签: ember.js

我的属性sum取决于3种不同的属性(在模型中)。我还有一个依赖于sum的其他属性。 isZerosum在模板{{isZero}} {{sum}}中有绑定。

这是我的简化代码:

sum: function () {
     console.log('sum is', this.get('p1') + this.get('p2') + this.get('p3'));
     return this.get('p1') + this.get('p2') + this.get('p3');
}.property('p1', 'p2', 'p3'),

p1: function () {
    console.log('update p1');
    return _data.p1;
}.property('data'),

p2: function () {
    console.log('update p2');
    return _data.p2;
}.property('data'),

p3: function () {
    console.log('update p3');
    return _data.p3;
}.property('data'),

data: {},

_data: {p1: 1, p2: 2, p3: 3},

isZero: function () {
    console.log('sum in isZero is', this.get('sum'));
    return this.get('sum') === 0;
}.property('sum'),

updateData: function () {
    this._data = {p1: 0, p2: 0, p3: 0};
    this.notifyPropertyChange('data');
} 

有时,当我更新数据时,sumisZero未正确更新。如果我拨打updateData(),这些是控制台中的打印件:

> update p1
> sum is 5
> sum in isZero is 5
> update p2
> update p3
> sum is 0

正如您所看到的,isZero不再更新,sum更新两次。我的模板将显示isZero false和sum 0。 我知道这段代码看起来很疯狂,但它是我能从我的问题中得到的最接近的代码。我试图在ember jsbin中重现,不幸的是它在那里正常工作。

任何人都有任何想法为什么会这样?

ps:updateData调用在ember运行循环中。我正在使用ember 1.9.1版。

0 个答案:

没有答案