简单的 $scope.$watch 不被调用?
问题出现的原因是在使用`$scope.$watch`函数时,可能没有正确设置第三个可选参数。解决方法是使用`$watchCollection`函数来监听对象内的所有对象,或者通过将第三个参数设置为`true`来实现深度监听。关于这个问题,可以参考这篇博客:http://www.bennadel.com/blog/2566-scope-watch-vs-watchcollection-in-angularjs.htm
问题的原因是$scope.$watch默认只会对简单的值或基本类型的变化进行监测,对于对象或数组的变化需要通过设置第三个可选参数为true来进行深度监测。
解决方法是在调用$scope.$watch时,将第三个参数设置为true,即可实现对对象或数组的深度监测。
以下是问题的原文及解决方法的整理:
在AngularJS中,$scope.$watch方法默认只会对简单的值或基本类型的变化进行监测。对于对象或数组的变化,需要通过设置第三个可选参数为true来进行深度监测。
如果需要监测对象或数组的变化,可以参考以下方法:
$scope.$watch('searchBuffer', function(newValue, oldValue) { // 监测到searchBuffer的变化时执行的代码 }, true);
在上述代码中,将第三个参数设置为true,即可实现对searchBuffer对象的深度监测。
更多关于此的问题,可以参考以下链接:[https://stackoverflow.com/questions/19455501](https://stackoverflow.com/questions/19455501)
希望以上内容对解决类似问题有所帮助。