web-dev-qa-db-ja.com

&?、=?、@?を使用する時期と理由AngularJSで?

いくつかのチュートリアルに従ってangularディレクティブを作成しました。分離スコープでは、いくつかのチュートリアルで次のようにスコープを定義します。

scope: {
  model: '=?',
  data:  '@?' 
}

一方、一部のチュートリアルでは、次のように疑問符なしでスコープを定義しています。

scope: {
  model: '=',
  data:  '@'
}

誰かが私にこれらの違いや目的を例で説明できますか?ありがとうございました。

9
Shaohao Lin

&@、および=シンボルは、すでにご存知のように、分離されたスコープオブジェクトのバインディング(一方向、双方向など)を定義するために使用されます。 これがすべてどのように機能するかについてのかなり徹底的なチュートリアルです

?記号は、分離スコープバインディングが参照する親スコーププロパティがoptionalであることを示すために使用されます。これは、何らかの理由で親スコーププロパティが存在しない場合、アプリケーションはNON_ASSIGNABLE_MODEL_EXPRESSION例外をスローせずに実行を継続することを意味します。

9
Daniel Cottone