답변:
'isolate'범위는 부모 범위에서 파생 된 로컬 범위 속성 집합을 정의하는 개체 해시를 사용합니다. 이러한 로컬 속성은 템플릿의 별칭 값을 지정하는 데 유용합니다. 지역 정의는 소스에 대한 지역 범위 속성의 해시입니다.
=
또는=attr
-로컬 범위 속성과 속성 값을 통해 정의 된 name의 부모 범위 속성간에 양방향 바인딩을 설정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]);
}
}