Angularjs 值的全局侦听器

Angularjs 值的全局侦听器,angularjs,Angularjs,在我的AngularJs应用程序中,我想要一种全局方式,在值发生变化时调用工厂 值为$scope.loading 因此,在控制器中,当我设置$scope.load=true “全局侦听器”将调用工厂progressFactory.start() 当我设置$scope.load=false时在控制器中,我希望“全局侦听器”调用工厂progressFactory.complete() 请用代码回答。您可以使用$watch $scope.$watch("loading", function(value

在我的AngularJs应用程序中,我想要一种全局方式,在值发生变化时调用工厂

值为
$scope.loading

因此,在控制器中,当我设置
$scope.load=true
“全局侦听器”将调用工厂
progressFactory.start()

当我设置
$scope.load=false时在控制器中,我希望“全局侦听器”调用工厂
progressFactory.complete()


请用代码回答。

您可以使用
$watch

$scope.$watch("loading", function(value) {
    if (value) progressFactory.start();
    else progressFactory.complete();
});
您可以使用:

$rootScope.$on("event", function(event, myValues)
当你不得不称之为:

$rootScope.$emit("event", myValus);
另一个解决方案是使用

 $rootScope.$watch

此侦听器是否适用于应用程序中的所有控制器?或者它是针对单个控制器的解决方案?是否可以同时侦听两个值,例如,当
$scope.gotData1=true
$scope.gotData2=true
时,我可以设置
$scope.loading=true
?这仅适用于单个控制器,使用
rootScope
捕获所有控制器中的事件。好的,但在控制器中。我可以修改您的代码以适用于两个(或更多)不同的值吗。因此,当我从多个数据源加载时,我可以这样做:当
$scope.gotData1=true
$scope.gotData2=true
时,我可以设置
$scope.loading=true
谢谢!我是个新手。您是否可以更具体地将其放置在何处,并在示例中使用my value
$scope.loading
。否则我就不知道了。必须在控制器中使用$rootScope.$on(这样它才能到达$scope)。$rootScope.$emit可以放在您想要的任何服务/控制器/指令中。