angularjs – 为什么$rootScope.$watch多次返回一个值?

我有一个角度应用程序,它有一个控制器,其功能可以在变量的基础上监视变量;那是,

angular.module('myApp').controller('myController', function($scope, $rootScope) {
    $rootScope.$watch('someVar', function() {
        console.log($rootScope.someVar);
    });
}

出于某种原因,如果我将$rootScope.someVar更改为“Hello”,我将得到以下控制台输出

> Hello
> Hello
> Hello

它为什么这样做?我正在编写一个解析大型数据文件的程序,如果我的性能提高三倍,我的生活会更快乐.

最佳答案 如果手表的副作用导致变量更改,则会再次调用手表,直到所有更改都得到解决.

因此,如果导致手表被触发的动作(更改someVar的动作)导致其他动作也会更新someVar,那么可以有一个级联(在角度足够之前最多10次?)

点赞