【问题标题】:How come $timeout updates the $rootScope variables from service to controller in AngularJs$timeout 如何将 $rootScope 变量从服务更新到 AngularJs 中的控制器
【发布时间】:2016-06-30 00:02:47
【问题描述】:

我有以下服务:

App.service('DateTimeService',function($timeout,$rootScope)
{
    var rootThis = this;
    this.countUp = function() {
        DateTime1 = new Date();
        console.log(DateTime1);
        $timeout(rootThis.countUp, 5000);

        $rootScope.DateTime = DateTime1;
    }    
    $timeout(rootThis.countUp, 5000); 

})

这已经被注入到控制器中:

var aController = function($scope, $rootScope, $location, $http,DateTimeService)
{

}

我在 angularJs 视图中定义了以下内容:

<span id="datetime">{{DateTime}}</span>

现在当我运行这个程序时,这个 DateTime 会自动更新到视图中,因为 $rootScope.DateTime 在递归调用中自动更新到 DateTimeService 中。

怎么会?,但是我尝试并搜索了很多方法,以便可以在 AngularJs Scope 中更新服务中某些 $rootScope 变量的动态更新值,然后查看? (但我没有找到任何东西?),现在当我通过调用此函数在 DateTime 服务中运行该函数时: $timeout(rootThis.countUp, 5000);然后它会更新视图的值?

【问题讨论】:

    标签: angularjs


    【解决方案1】:

    $timeout 在完成时实际上调用了$scope.$apply()
    $scope.$apply() 触发一个摘要循环,
    由于您的 DateTime 是一个 $rootScope 变量,因此它将在摘要周期的视图中更新。

    【讨论】:

    • 哇!我是 angularJs 的初学者,很高兴知道这个概念。那么你认为这可能是将 $rootScope 变量从服务更新到控制器然后在视图上的适当方法之一。
    猜你喜欢
    • 2016-09-02
    • 2014-05-01
    • 2014-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多