javascript - 我怎样才能在几分钟内进行 Angular 倒计时?

标签 javascript angularjs countdown

这是我的代码,但我找不到如何在几分钟内进行倒计时,我的意思是,而不是 3000、30:00...有什么帮助吗?

  <script>
  app.controller("Counter", function($scope,$timeout){
    $scope.counter = 3000;
    $scope.onTimeout = function(){
        $scope.counter--;
        mytimeout = $timeout($scope.onTimeout,1000);
    }
    var mytimeout = $timeout($scope.onTimeout,1000);
});
 </script>

最佳答案

你的 Controller 没问题,你只需要:

  • 将 3000 更改为 1800(30 分钟为 1800 秒)。
  • 在递减 counter 之前添加条件以避免反转: if ($scope.counter > 0) $scope.counter--;

现在将秒显示为 'mm:ss' 将计数器转换为日期。您可以使用过滤器(来自这个 answer )

app.filter('secondsToDateTime', [function() {
    return function(seconds) {
        return new Date(1970, 0, 1).setSeconds(seconds);
    };
}])

然后这样显示:

{{counter | secondsToDateTime | date:'mm:ss'}}

fiddle 中查看其工作原理或在下面的代码片段中。

var myApp = angular.module('myApp', []);

function MyCtrl($scope, $timeout) {
  $scope.counter = 1800;
  $scope.onTimeout = function() {
    if ($scope.counter > 0) $scope.counter--;
    mytimeout = $timeout($scope.onTimeout, 1000);
  }
  var mytimeout = $timeout($scope.onTimeout, 1000);
}

myApp.filter('secondsToDateTime', [function() {
  return function(seconds) {
    return new Date(1970, 0, 1).setSeconds(seconds);
  };
}])
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.9/angular.min.js"></script>
<div ng-app="myApp" ng-controller="MyCtrl">
  {{counter | secondsToDateTime | date:'mm:ss'}}
</div>

关于javascript - 我怎样才能在几分钟内进行 Angular 倒计时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37802276/

相关文章:

javascript - Trampoline、递归和惰性求值

javascript - 在提交调用 webapi 之前获取 Angularjs 变量中的输入值

javascript - jQuery 交互式 map 库?

javascript - W3 DOM规范中String和DOMString有什么区别

javascript - 如何将键值对附加到 AngularJS 中已经存在的键值对的 url?

javascript - 使用 Jasmine (无后端测试)单独手动调试 Angular Directive(指令)

Javascript:通过 animation.width() 倒计时

javascript - 倒数计时器不会停在 0

javascript - 1 分钟倒计时 Javascript

javascript - 使用 .each() 处理 jQuery 函数时遇到问题