回答:
'isolate'スコープは、親スコープから派生した一連のローカルスコーププロパティを定義するオブジェクトハッシュを取ります。これらのローカルプロパティは、テンプレートのエイリアス値に役立ちます。ローカル定義は、ソースに対するローカルスコーププロパティのハッシュです。
=
または=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]);
}
}