为什么以下代码不是等效的?
计算出:
computed: Ember.computed('selected', function() {
console.log('computed');
return this.get('selected');
}),
observer1: Ember.observer('computed', function() {
console.log('observer1');
}),
observer2: Ember.observer('selected', function() {
console.log('observer2');
}),
与别名:
computed: Ember.computed.alias('selected'),
observer1: Ember.observer('computed', function() {
console.log('observer1');
}),
observer2: Ember.observer('selected', function() {
console.log('observer2');
}),
第一个仅打印observer2
,第二个打印observer1
和observer2
。
在第一个中, computed
只是一个getter。因此,如果您不在模板或其他地方在更改时尽快使用computed
,则不会通过更改selected
来调用。
,但在第二个中,别名也创建了设定器。因此,如果您更改selected
,则computed
在此之后更改。
如果您在模板中的第一个中使用computed
,则相同结果。