2017-03-09 5 views
2

なぜ次のコードが等しくないのですか?別名にEmberJS - 計算されたプロパティを観察する

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を印刷し、もう一つはobserver1observer2を印刷します。

+0

ここで、あなたは 'selected'プロパティを設定または使用していますか?私たちが遊ぶのに役立つember-twiddleを与えてください。 – kumkanillam

+0

https://ember-twiddle.com/9889ca94828ddefef2cb75d8c6e5942b2?openFiles=templates.application.hbs%2C – Charles

答えて

1

最初のものでは、computedはゲッターに過ぎません。したがって、computedをテンプレートや他の場所で使用して、変更時にASAPを反応させない場合は、selectedを変更しても呼び出されません。

しかし、2番目のエイリアスではセッターも作成されます。したがって、selectedを変更すると、それ以降はcomputedがすぐに変更されます。

テンプレートで最初にcomputedを使用すると、同じ結果が得られます。

+0

[OK]をクリックすると、計算された? – Charles

+0

@Charles computedプロパティはプロパティです。プロパティは単にデータを運ぶためのものであり、データを表示します。変更が発生したときに何らかのプロセスが必要な場合、オブザーバーは正しいプロセスです。 –

+0

@Charlesしたがって、ここではプロパティを使用することを意味します –

関連する問題