Programing

'='의 의미는 무엇입니까?

crosscheck 2020. 7. 9. 08:10
반응형

'='의 의미는 무엇입니까? angularJS 지시문에서 범위 선언을 분리합니까?


등호 뒤의 물음표에는 특별한 의미가 있습니까? 즉 :

scope: {foo: '=?'}

위의 'foo'를 해결할 수 없으면 '오류를 일으키지 않습니다'를 의미합니까?


예:

'isolate'범위는 부모 범위에서 파생 된 로컬 범위 속성 집합을 정의하는 개체 해시를 사용합니다. 이러한 로컬 속성은 템플릿의 별칭 값을 지정하는 데 유용합니다. 지역 정의는 소스에 대한 지역 범위 속성의 해시입니다.

=또는 =attr-로컬 범위 속성과 속성 값을 통해 정의 된 name의 부모 범위 속성간에 양방향 바인딩을 설정 attr합니다. attr이름을 지정 하지 않으면 속성 이름이 로컬 이름과 동일한 것으로 간주됩니다. <widget my-attr="parentModel">위젯 정의와 위젯 scope: { localModel:'=myAttr' }범위 속성 localModelparentModel상위 범위 의 값을 반영합니다 . 변경 사항 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]);
    }
}

참고 URL : https://stackoverflow.com/questions/20447786/whats-the-meaning-of-in-angularjs-directive-isolate-scope-declaration

반응형