AngularJS データバインディングタイプ 質問する

AngularJS データバインディングタイプ 質問する

これは古くて 100 回も回答されている質問だとはわかっていますが、最新のリリースでは状況が複雑化しており、混乱を招いています。ディレクティブ内の属性のデータ バインディングを宣言する現在利用可能な 4 つの方法の違いを知りたいです。具体的には、次のとおりです。

  • @テキストバインディング
  • =双方向バインディング
  • &メソッドバインディング(一方通行バインディングと呼ぶ人もいます)
  • <一方向バインディング

私は特に最後の 2 つの違いに興味があります。なぜなら、これらの機能は重複しているようで、一方と他方の違いや利点がまったく分からないからです。

ベストアンサー1

@テキストバインディング:

これは、ディレクティブの各インスタンスに静的テキストを提供する場合に使用されます。たとえば、ダイアログを作成するために使用されるカスタム ディレクティブに渡す必要があるタイトルや特定のスタイル/プロパティ コンポーネントなどです。

=双方向バインディング:

これは、通常の Angular 双方向データ バインディングです。たとえば、ダイアログ内のライブ データ更新やユーザー入力 (チェックボックス、ラジオ ボタンなど) は、これを使用して実現できます。

&メソッドバインディング:

名前が示すように、これは主にディレクティブから親コントローラで定義されたメソッドを呼び出すために使用されます。また、式を評価し、その結果をディレクティブのスコープにバインドするためにも使用できます。典型的な使用法としては、ユーザーがダイアログを閉じるときなどのユーザー イベントに応答することが考えられます。

<一方向バインディング:

これは、ディレクティブ スコープからの更新を親スコープに反映する必要がない、より高パフォーマンスの状況のた​​めに導入されたと思います。一般的な使用シナリオは、タイトル、スタイル、ダイアログ構成 (モーダル/非モーダルなど) を親スコープで定義された変数を介して渡す必要がある場合です。このようなデータはカスタム ディレクティブ (このケースではダイアログ) のスコープではほとんど変更されないため、一方向バインディングの方が二重バインディングよりもパフォーマンスが高くなります。これは、Angular ウォッチ サイクルでは、ディレクティブの一方向バインド変数ではなく、親スコープ変数のみを監視する必要があるためです。

注記:私は AngularJS の専門家ではないので、上記の回答は私の知る限りでは最善の回答です。経験豊富な Angular の専門家の視点から見ると、間違っているかもしれません。間違いがありましたらご容赦ください。

公式ドキュメント: https://docs.angularjs.org/api/ng/service/$compile#-scope-

おすすめ記事