我想了解boundJS中的绑定是如何工作的。 我试图尽可能简单地创建代码来向您展示mu问题。 我知道如何使用它,但我不知道它是如何工作的。
这是我的例子。在其中我有3个范围变量: Plunker
<pre>{{A}}</pre>
<pre>{{B}}</pre>
<pre>{{C()}}</pre>
这些定义如下:
$scope.A = factory;
$scope.B = factory.a;
$scope.C = function() {
return factory.a.b;
};
名为“factory”的工厂返回此对象:
a: {'b': 'foo'}
超时以这种方式更新工厂:
$timeout(function() {
factory.a = {
'b': 'BOO'
}
}, 1000);
我想问一下,是否有人能够清楚地回答为什么只有第一个(A)和第三个(C)在超时后更新而不是第二个。
答案 0 :(得分:0)
案例B 没有变化,因为$scope.B
没有变化。
factory.a = {b: 'foo'};
$scope.B = factory.a;
$timeout(function() {
factory.a = {'b': 'BOO'};
}, 1000);
当$timeout
函数更改factory.a
时,$scope.B
仍然指向上一个对象{b: 'foo'}
。
案例A 更改,因为$scope.A
的内容发生了变化。
$scope.A = factory;
即使名为factory
的对象引用没有改变,引用的内容也会发生变化。
案例C 会发生变化,因为函数的返回值会发生变化。
$scope.C = function() {
return factory.a.b;
};
每个摘要周期,AngularJS框架都会评估函数并通过任何更改来更新DOM。