我有:
$scope.$watch('option.sSubject', function (newValue, oldValue) {
if (newValue !== oldValue) {
和
console.log(newValue)
1
undefined
console.log(oldValue)
1
undefined
有人可以解释为什么手表在值似乎没有变化时会触发。请注意,这是我刚刚打开页面的时间。
答案 0 :(得分:7)
引用来自$ scope的API documentation。$ apply():
在观察者注册观察者之后,异步调用侦听器fn(通过$ evalAsync)来初始化观察者。在极少数情况下,这是不合需要的,因为当watchExpression的结果没有改变时会调用监听器。要在侦听器fn中检测此场景,您可以比较newVal和oldVal。如果这两个值相同(===)则由于初始化而调用了监听器。