$scope.$watch(
function(scope) {return scope.aNumber;},
function(newValue, oldValue) {alert("Value changed");}
);
});
$scope.$watch 在其第一个函数中采用的“范围”是什么? (此后的所有内容都是与切线相关的额外信息)。我知道没有 $ 的“范围”通常只代表一个变量,如指令链接函数(范围、元素、属性、ngController)等。但是我不知道它“来自”这里。显然它连接到 Controller 的 $scope,但是如何连接呢?
此外,官方文档指出“每次调用 $digest() 时都会调用 watchExpression,并且应该返回将要监视的值。(因为 $digest() 在检测到更改时重新运行,所以 watchExpression 可以在每个调用中执行多次$digest() 并且应该是幂等的。)”那么,执行返回函数而不是仅仅说 $scope.valueToWatch (这对我不起作用,但我见过人们这样做)有什么优势。
<小时/>用工作 watch 只是为了它的 hell ,并不真的需要它来q: http://plnkr.co/edit/y86Wr93xLIao3wTwVsT8?p=preview
对于那些稍后阅读相同 q 的人: $watch 上的好文章:http://tutorials.jenkov.com/angularjs/watch-digest-apply.html
最佳答案
与执行 $watch
的作用域相同。使用这个而不是 $scope
的唯一优点是它可以避免无用的闭包,但它的作用是一样的。
我不确定是否理解你的第二个问题,但请注意,它们是等效的:
1. $scope.$watch(function(scope) { return scope.prop1.prop2; }, cb);
2. $scope.$watch(function() { return $scope.prop1.prop2; }, cb);
3. $scope.$watch('prop1.prop2', cb);
关于javascript - 传递给 $scope.$watch 函数的 "scope"是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29640386/