gpt4 book ai didi

javascript - 为什么我的 AngularJS $scope.$watch 没有在服务更改时触发?

转载 作者:行者123 更新时间:2023-12-03 12:12:32 24 4
gpt4 key购买 nike

在我的 Controller 中,我有:var timespanServiceFn;

timespanServiceFn = function() {
return timespanService.getTimespan();
};

$scope.$watch(timespanServiceFn, $scope.updateVolume());

我的$scope.updateVolume()函数只有一个console.log,这样我就知道我已经到达那里了。

我的timespanService也非常简单:

myApp.service('timespanService', [
'$http', '$q', function($http, $q) {
var currentTimespan;
currentTimespan = '3M';
this.getTimespan = function() {
return currentTimespan;
};
this.setTimespan = function(timespan) {
console.log('setting timespan to', timespan);
return currentTimespan = timespan;
};
}
]);

那么为什么当我更改时间跨度时,$watch 没有被触发?

最佳答案

watch 接受两个函数作为参数。您必须将第二个参数作为参数传递,但您只是在那里调用了它:

$scope.$watch(timespanServiceFn, $scope.updateVolume());

因此 $scope.updateVolume() 的 return 语句将被传递给 $watch 函数,而不是函数定义本身。

只需将其更改为:

$scope.$watch(timespanServiceFn, $scope.updateVolume);

<强> See demo

关于javascript - 为什么我的 AngularJS $scope.$watch 没有在服务更改时触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24892869/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com