17

Emberでは、を使用して別のプロパティ(または別のオブジェクトのプロパティ)への計算されたエイリアスとしてプロパティをEmber.computed.alias('otherProperty')定義すると、を使用してそのプロパティへのバインディングとして定義するのと基本的に同じ結果になるようpropertyNameBinding: 'otherProperty'です。

ソースとドキュメントを見てきましたが、一方が他方よりも優先される理由を見つけることができません。明らかに、テンプレートはバインディングを使用しますが、これは問題ありませんが、コントローラーなどのプロパティの場合、またはビューでコントローラーのプロパティを参照する場合に違いはありますか?

4

1 に答える 1

14

エイリアスはextend()で上書きできるため、他のキーとの関係が完全になくなります。

簡単な例:時間に関連する関数とクラスのクラスがあり、クラスにはunitプロパティ(Day、Minuteなど)とプロパティの両方がありprecisionます。通常、これらは機能的に同じです。1つまたは2つのクラスでは、それらは分岐します。ほとんどの場合、エイリアスを作成Ember.computed.aliasできますが、必要に応じて独自の値でオーバーライドできます。precisionunit

create()は、オーバーライドする代わりにエイリアスセッターを使用することに注意してください。

また、パスにnullオブジェクトを含むエイリアスを設定すると、爆発する可能性がありますが、パスがどこにも通じていない場合、バインディングは単純に同期されません。

*Binding構文のソフト非推奨ごとに以下のmorgothのコメントを参照してください。

于 2013-03-06T21:36:49.327 に答える