如何在几分钟内进行角度倒计时?

pat*_*zek 3 javascript countdown angularjs

这是我的代码,但我找不到如何在几分钟内完成倒计时,我的意思是,而不是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>
Run Code Online (Sandbox Code Playgroud)

Łuk*_*asz 8

您的控制器没问题,您只需要:

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

现在显示秒数作为'mm:ss'转换计数器到日期.您可以使用过滤器(来自此答案)

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

并显示它:

{{counter | secondsToDateTime | date:'mm:ss'}}
Run Code Online (Sandbox Code Playgroud)

看看它如何在小提琴或下面的片段中工作.

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);
  };
}])
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)