等号の後の疑問符は特別な意味を持っていますか?すなわち:「=?」という意味は何ですか? angularJSディレクティブのスコープ宣言を分離しますか?
scope: {foo: '=?'}
上記のことは、 'foo'を解決できないとエラーを発生しませんか?
等号の後の疑問符は特別な意味を持っていますか?すなわち:「=?」という意味は何ですか? angularJSディレクティブのスコープ宣言を分離しますか?
scope: {foo: '=?'}
上記のことは、 'foo'を解決できないとエラーを発生しませんか?
「単離」スコープは、親スコープに由来するローカルスコーププロパティのセットを定義するオブジェクトのハッシュを取ります。これらのローカルプロパティは、テンプレートの値のエイリアシングに役立ちます。地元の人の定義は、そのソースにローカルスコーププロパティのハッシュです:
=
または=attr
- ローカルスコープ 財産とattr
属性の値 を経由して定義された名前の親スコープのプロパティとの間の双方向バインディング設定します。attr
の名前が指定されていない場合、 属性名はローカル名と同じであるとみなされます。<widget my-attr="parentModel">
とウィジェット定義scope: { localModel:'=myAttr' }
を指定すると、ウィジェットのスコーププロパティlocalModel
は に親スコープのparentModel
の値を反映します。parentModel
の変更はlocalModel
に反映され、localModel
の変更はparentModel
に反映されます。 親スコープの プロパティが存在しない場合は、 NON_ASSIGNABLE_MODEL_EXPRESSION例外がスローされます。この動作を回避するには、=?
または=?attr
を使用して、プロパティをオプションとしてフラグを立てます。
それはスコープのプロパティに影響を与え、すべてのダイジェストに予想されるエラーをトリガする必要があります
parentSet = parentGet.assign || function() {
// reset the change, or we will throw this exception on every $digest
lastValue = scope[scopeName] = parentGet(parentScope);
throw Error(NON_ASSIGNABLE_MODEL_EXPRESSION + attrs[attrName] +
' (directive: ' + newScopeDirective.name + ')');
};
//...
if (parentValue !== scope[scopeName]) {
// we are out of sync and need to copy
if (parentValue !== lastValue) {
// parent changed and it has precedence
lastValue = scope[scopeName] = parentValue;
} else {
// if the parent can be assigned then do so
parentSet(parentScope, lastValue = scope[scopeName]);
}
}
理にかなっているが、なぜない[このディレクティブ]ない(http://plnkr.co/edit/ FxyDVi5JeWyC6B8TX1fk?p = preview)例外をスローします。親スコーププロパティが存在せず、スコープ割り当てが '=?'を使用していません。 – Nikita
値が設定されているときにエラーが発生したように見えます。http://plnkr.co/edit/OSpaC6sPE0hY9yAeFghr?p=preview –
これは公式のangularjsドキュメントに記載されていますか? – cebor