Значит ли знак вопроса после равных иметь особое значение? то есть:
scope: {foo: '=?'}
означает ли это выше, "не поднимать ошибку, если" foo "не может быть разрешено?
Значит ли знак вопроса после равных иметь особое значение? то есть:
scope: {foo: '=?'}
означает ли это выше, "не поднимать ошибку, если" foo "не может быть разрешено?
Область "isolate" принимает хеш объекта, который определяет набор свойств локальной области, полученных из родительской области. Эти локальные свойства полезны для значений псевдонимов для шаблонов. Определение локальных локалей - это хэш локального свойства scope к его источнику:
=
или=attr
- установить двунаправленную привязку между локальной областью свойство и свойство родительской видимости имени, определенного через значение атрибутаattr
. Если не указано имяattr
, тогда имя атрибута считается таким же, как локальное имя. Данный<widget my-attr="parentModel">
и определение виджетаscope: { localModel:'=myAttr' }
, тогда свойство scope widgetlocalModel
будет отражают значение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]);
}
}