有时当我使用'='
中的directive
通过引用传递变量,并更新parent controller
中的引用变量时,它不会立即更新,但会在制作后更新$scope.$digest()
。
我认为angular不会像JS绑定那样进行引用绑定,但是当scope digest
只更新其引用的变量时。
我不知道我的理论是否正确。
你觉得怎么样?答案 0 :(得分:0)
AngularJS $compile service通过添加观察者来实现双向'='
绑定:
var parentValueWatch = function parentValueWatch(parentValue) { if (!compare(parentValue, destination[scopeName])) { // we are out of sync and need to copy if (!compare(parentValue, lastValue)) { // parent changed and it has precedence destination[scopeName] = parentValue; } else { // if the parent can be assigned then do so parentSet(scope, parentValue = destination[scopeName]); } } lastValue = parentValue; return lastValue; }; parentValueWatch.$stateful = true; if (definition.collection) { removeWatch = scope.$watchCollection(attrs[attrName], parentValueWatch); } else { removeWatch = scope.$watch($parse(attrs[attrName], parentValueWatch), null, parentGet.literal); } removeWatchCollection.push(removeWatch);
观察程序检查父作用域属性是否与isolate scope属性不同步,并根据需要进行更新。这意味着隔离范围仅在摘要周期后更新。