当$scope.$watch
正在监视的值在应用程序中不存在时,为什么会调用它?
正如您在下面看到的,无论我为watchExpression分配什么字符串,函数都会运行。。。
$scope.$watch( 'kwhefjkewgfweahhfwujad' , // a bunch of random letters
function()
{ console.log("it fired ... why?");
}
) ;
Firefox没有显示任何错误。
尝试
$scope.$watch( 'kwhefjkewgfweahhfwujad', function(val) {
if (val) {
console.log("it fired ... why?");
}
});
每个摘要周期都有观察者在运行。当您观察附加到作用域的基元值时,您需要验证新值是否存在(并且已经更改)。
你也可以做
$scope.$watch( 'kwhefjkewgfweahhfwujad', function(newVal, oldVal) {
if (newVal !== oldVal) {
console.log("it fired ... why?", newVal, oldVal);
}
});