2015-07-19 90 views
-1

我学习AngulaJS,这里是代码:为什么在使用setInterval时无法更新时间?

<!doctype html> 
<html ng-app> 
    <head> 
     <script src="http://code.angularjs.org/angular-1.0.1.min.js"></script> 
     <script src="script.js"></script> 
    </head> 

<body> 
    <div ng-controller="ClockCtrl"> 
     Current time is: {{ time.now }} 
    </div> 
    </body> 

</html> 

中的script.js:

function ClockCtrl($scope){ 
    var time = {}; 
    time.now = new Date().toString(); 
    $scope.time = time; 
    setInterval(function(){ 
     $scope.time.now = new Date().toString(); 
     console.log(time.now); 
    }, 1); 
} 

但我不知道为什么时间水湿是在HTML显示更新?

+0

可能要使用角度的[$间隔(HTTPS://docs.angularjs .ORG/API/NG /服务/ $间隔)。出于好奇,'time'和'scope.time'是什么?为什么不直接使用'$ scope.time'? – Huey

回答

0

,您应该使用$interval指令,而不是setInterval,这将在内部调用$scope.$apply()更新绑定

function ClockCtrl($scope, $interval){  
    $interval(function(){ 
     $scope.time.now = new Date().toString(); 
    }, 1000); 

    ////Or, You can use $scope.$apply() 
    //setInterval(function() { 
    // $scope.time.now = new Date().toString(); 
    // $scope.$apply(); 
    //}, 1000); 
} 

DEMO

+0

我不知道为什么要显示这个'当前时间是:{{time.now}}'? – BlackMamba

+0

@BlackMamba,看起来你还没有声明角度的应用程序,像'angular.module('myApp',[]).control(ClockCtrl)'' – Satpal

相关问题