gpt4 book ai didi

javascript - Angular 观察对象不在范围内

转载 作者:行者123 更新时间:2023-11-28 08:11:41 25 4
gpt4 key购买 nike

我有一项服务,其中的值可以从 Angular 外部更改:

angularApp.service('WebSocketService', function() {
var serviceAlarms = [];
var iteration = 0;

this.renderMessages = function(alarms, socket) {
if (! angular.equals(serviceAlarms, alarms)) {
serviceAlarms = alarms;
iteration++;
}
};

this.getAlarms = function () {
return serviceAlarms;
};
this.iteration = function () {
return iteration;
};
this.socket = initSocketIO(this);
});

initSocketIO 函数对此服务 renderMessages() 函数进行回调,并且 serviceAlarms 变量会稳定地更改。

现在我正在尝试观察此服务的变化,如下所示:

controllers.controller('overviewController', ['$scope', 'WebSocketService', function ($scope, WebSocketService) {
$scope.$watch(
function () {
return WebSocketService.iteration();
},
function(newValue, oldValue) {
$scope.alarms = WebSocketService.getAlarms();
},
true
);
}]);

无济于事。除了 Controller 初始化之外,提供给 $watch 的第二个函数永远不会执行。

我尝试过使用或不使用 true 作为第三个参数。

最佳答案

您应该使用$rootScope.$watch(而不是$scope.$watch)

关于javascript - Angular 观察对象不在范围内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24136595/

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