Yanıtlar:
'Yalıtım' kapsamı, üst kapsamdan türetilen bir dizi yerel kapsam özelliğini tanımlayan bir nesne karma değerini alır. Bu yerel özellikler, şablonlar için değerleri takma ad olarak kullanmak için kullanışlıdır. Yereller tanımı, kaynağına yerel kapsam özelliğinin bir karmasıdır:
=
veya=attr
- yerel bir kapsam özelliği ileattr
özniteliğin değeri aracılığıyla tanımlanan adın üst kapsam özelliği arasında iki yönlü bağlanma oluşturun . Herhangi birattr
ad belirtilmezse, öznitelik adının yerel adla aynı olduğu varsayılır. Verilen<widget my-attr="parentModel">
ve pencere öğesi tanımıscope: { localModel:'=myAttr' }
, bu durumda pencere öğesi kapsam özelliği , üst kapsamdakilocalModel
değerini yansıtırparentModel
. Herhangi bir değişiklik içinparentModel
yansıtılacaktırlocalModel
ve herhangi bir değişikliklocalModel
olarak etkilerparentModel
. Üst kapsam özelliği yoksa, bir NON_ASSIGNABLE_MODEL_EXPRESSION istisnası atar. Özelliği isteğe bağlı olarak işaretlemek için=?
veya kullanarak bu davranıştan kaçınabilirsiniz=?attr
.
Kapsam özelliğini etkileyen her özette beklenen hatayı tetiklemelidir:
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]);
}
}