简单的 $scope.$watch 不被调用?

9 浏览
0 Comments

简单的 $scope.$watch 不被调用?

我有一个简单的表格应用程序,从数据库中获取JSON数据。它通过参数将数据传递给我的应用程序控制器,然后对数据进行筛选。这个功能非常好。然而,这是大量的数据(十万个对象)。我有搜索框,用来尝试筛选数据,但是当搜索输入框中有输入时,应该调用搜索监听函数($watch),但实际上没有调用。我是不是漏掉了什么?

0
0 Comments

问题出现的原因是在使用`$scope.$watch`函数时,可能没有正确设置第三个可选参数。解决方法是使用`$watchCollection`函数来监听对象内的所有对象,或者通过将第三个参数设置为`true`来实现深度监听。关于这个问题,可以参考这篇博客:http://www.bennadel.com/blog/2566-scope-watch-vs-watchcollection-in-angularjs.htm

0
0 Comments

问题的原因是$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)

希望以上内容对解决类似问题有所帮助。

0