需要知道,为什么需要使用$ apply

时间:2014-05-05 04:52:04

标签: javascript angularjs

我需要知道,为什么我们需要在这里使用$ apply,

var clock = angular.module('clock',[]); 
clock.controller('MyController', function($scope) {
        $scope.clock = new Date();
        var updateClock = function() {
          $scope.clock = new Date();
        };
        setInterval(function() {
          $scope.$apply(updateClock);
          //updateClock()  //why this will not work.
        }, 1000);
        updateClock();
      });

Demo

我知道,当使用$ apply时:

  

“$ apply()函数在Angular内部执行一个表达式   来自Angular框架之外的上下文。例如,如果我们   实现一个setTimeout()或正在使用第三方库和我们   希望事件在Angular上下文中运行,我们必须使用   $适用于()。”   块引用

但是为什么我们需要在这种情况下使用(我的意思是在jsfiddle示例中),因为我在相同的上下文中而不使用任何jQuery代码或第三方库,

With Out $apply fiddle

函数被调用,但输出反映在视图中,为什么?

1 个答案:

答案 0 :(得分:1)

阅读以下手册。 :)
https://github.com/angular/angular.js/wiki/When-to-use-$scope.$apply()

//来自评论的更新
您需要使用$interval服务。