我试图在AngularJS中的服务和控制器之间共享数据 我已经阅读了它,我的代码应该可以工作,但事实并非如此。
这是我的控制者:
function udpController($scope,$interval,udpService) {
$scope.status = udpService.status;
$interval(function(){udpService.changeStatus();},2500);
}
这是我的服务:
angular.module('udpTest').service('udpService' ,function() {
var self = this;
this.status;
this.changeStatus = function() {
self.status = Math.random();
}
}
$scope.status
根本没有变化。
感谢。
答案 0 :(得分:1)
您首先分配值,而$ interval中调用的函数不知道要更新$ scope.status的值。所以你需要在函数中包含这样的内容:
function udpController($scope,$interval,udpService) {
$interval(function(){
udpService.changeStatus();
$scope.status = udpService.status;
},2500);
}
答案 1 :(得分:-1)
您$scope
的值已更新为undefined
,因为在堆栈中的所有函数之后调用$interval
。
$interval(function(){udpService.changeStatus();},2500);
更改以下内容:
$interval(function(){udpService.changeStatus();$scope.status =udpService.status; },2500);
如果udpService.changeStatus();
是异步通话,那么将$q
服务与promises
(resolved, rejected)
一起使用会更好;