【问题标题】:Using $timeout within my app在我的应用程序中使用 $timeout
【发布时间】:2015-10-27 15:39:04
【问题描述】:

我正在使用 $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);
}]);

【问题讨论】:

  • $timeout 只触发一次。您希望 $interval 用于重复功能
  • 因为循环运行是由 $interval 提供的。 $timeout 仅用于延迟运行。
  • 抱歉没有考虑。

标签: angularjs timeout


【解决方案1】:

请改用$interval,因为$timeout 将在计时器结束时触发该函数一次,而$interval 将在计数器结束时触发该函数,并且它将再次从计数器开始,直到您将其清除。

angular.module('MyApp', [])
.controller('MainCtrl', ['$interval',function($interval){
    var mainCtrl = this;
    mainCtrl.date = {};
    $interval(function(){
        mainCtrl.date.raw = new Date();   
    }, 1000);
}]);

【讨论】:

    【解决方案2】:

    $timeout 只会在计时器结束后触发一次。 如果您想每 n 毫秒运行一次函数,请使用 $interval

    var app = angular.module('App', [])
    app.controller('Ctrl', function($scope, $interval){
        $scope.date = {};
      
        $interval(function(){
            $scope.date.raw = new Date();   
        }, 1000);
    });
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
    
    <body ng-app="App" ng-controller="Ctrl">
      {{date.raw | date:'yyyy-MM-dd HH:mm:ss'}}
    </body>

    【讨论】:

      猜你喜欢
      • 2015-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-03
      • 2018-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多