ディレクティブのスコープを宣言するときに、記号「@」、「=」に出くわしました。
'='バインディングが'@'に優先される場合、またはその逆の場合はいつになるのでしょうか。
ディレクティブのスコープを宣言するときに、記号「@」、「=」に出くわしました。
'='バインディングが'@'に優先される場合、またはその逆の場合はいつになるのでしょうか。
公式ドキュメントから、あなたは読むことができます:
@または@attr-ローカルスコーププロパティをDOM属性の値にバインドします。DOM属性は文字列であるため、結果は常に文字列になります。属性名が指定されていない場合、属性名はローカル名と同じであると見なされます。スコープのウィジェット定義が与えられた場合:{localName:'@ myAttr'}、ウィジェットスコーププロパティlocalNameは、hello{{name}}の補間値を反映します。name属性が変更されると、ウィジェットスコープのlocalNameプロパティも変更されます。名前は、(コンポーネントスコープではなく)親スコープから読み取られます。
=または=attr-ローカルスコーププロパティと、attr属性の値を介して定義された名前の親スコーププロパティとの間に双方向バインディングを設定します。属性名が指定されていない場合、属性名はローカル名と同じであると見なされます。スコープのウィジェット定義が与えられた場合:{localModel:'= myAttr'}、ウィジェットスコーププロパティlocalModelは、親スコープのparentModelの値を反映します。parentModelへの変更はlocalModelに反映され、localModelへの変更はparentModelに反映されます。
したがって、双方向バインディングが必要な場合は、=
...を使用する必要があります。