在服务和控制器之间共享数据

时间:2016-06-12 18:50:06

标签: javascript angularjs

我试图在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根本没有变化。
感谢。

2 个答案:

答案 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)一起使用会更好;