Відповіді:
Область "ізолювати" приймає хеш об'єктів, який визначає набір властивостей локальних областей, отриманих з батьківської області. Ці локальні властивості корисні для згладжування значень для шаблонів. Визначення локальних ресурсів - це хеш властивості локального діапазону до його джерела:
=
або=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]);
}
}