Angularjs 在我的应用程序中使用$timeout

Angularjs 在我的应用程序中使用$timeout,angularjs,timeout,Angularjs,Timeout,我正在使用$timeout服务,我想知道为什么我的'mainCtrl.date.raw'变量不会每秒更新。有什么想法吗 angular.module('MyApp', []) .controller('MainCtrl', ['$timeout',function($timeout){ var mainCtrl = this; mainCtrl.date = {}; $timeout(function(){ mainCtrl.date.raw = new

我正在使用$timeout服务,我想知道为什么我的'mainCtrl.date.raw'变量不会每秒更新。有什么想法吗

angular.module('MyApp', [])
.controller('MainCtrl', ['$timeout',function($timeout){
    var mainCtrl = this;
    mainCtrl.date = {};
    $timeout(function(){
        mainCtrl.date.raw = new Date();   
    }, 1000);
}]);
改为使用$interval,因为$timeout将在计时器完成时触发函数一次,而$interval将在计数器完成时触发函数,并且它将使用计数器再次启动,直到您清除它为止

angular.module('MyApp', [])
.controller('MainCtrl', ['$interval',function($interval){
    var mainCtrl = this;
    mainCtrl.date = {};
    $interval(function(){
        mainCtrl.date.raw = new Date();   
    }, 1000);
}]);
$timeout将仅在计时器到达终点后触发一次。 如果您希望每n毫秒运行一次函数,请使用$interval

var app=角度。模块'app',[] 应用程序控制器'Ctrl',函数$scope,$interval{ $scope.date={}; $intervalfunction{ $scope.date.raw=新日期; }, 1000; }; {{date.raw}日期:'yyyy-MM-dd HH:MM:ss'}
$timeout只触发一次。由于循环运行由$interval提供,因此需要循环函数$超时仅用于延迟运行。抱歉,我没有思考。