为什么以下代码不相同?
用计算:
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
。
答案 0 :(得分:1)
在第一个中,computed
只是一个吸气剂。因此,如果您不在模板或其他地方使用computed
来对更改做出反应,则不会通过更改selected
来调用它。
但在第二个中,别名也会创建setter。因此,如果您更改selected
,computed
之后会很快更改。
如果您在模板的第一个中使用computed
,则会得到相同的结果。