首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >angularjs做了一个简单的倒计时

angularjs做了一个简单的倒计时
EN

Stack Overflow用户
提问于 2012-08-21 15:39:03
回答 5查看 132.1K关注 0票数 49

我想用Angular js做一个countDown。这是我的代码:

Html文件

代码语言:javascript
复制
<div ng-app ng-controller = "countController"> {{countDown}} <div>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

js文件

代码语言:javascript
复制
function countController($scope){
    $scope.countDown = 10;    
    var timer = setInterval(function(){$scope.countDown--; console.log($scope.countDown)},1000);  
}​​

在console.log中,我有一个倒计时,但在{{ countdown }}刷新它没有,你能帮我吗?谢谢!

EN

回答 5

Stack Overflow用户

发布于 2012-08-21 15:53:44

当您从angular框架外部执行一个angular表达式时,您应该使用$scope.$apply()

代码语言:javascript
复制
function countController($scope){
    $scope.countDown = 10;    
    var timer = setInterval(function(){
        $scope.countDown--;
        $scope.$apply();
        console.log($scope.countDown);
    }, 1000);  
}

http://jsfiddle.net/andreev_artem/48Fm2/

票数 9
EN

Stack Overflow用户

发布于 2014-01-10 04:23:26

我更新了ganaraj先生的回答,以显示停止和恢复功能,并添加了角度js过滤器,以格式倒计时计时器

it is here on jsFiddle

控制器代码

代码语言:javascript
复制
'use strict';
var myApp = angular.module('myApp', []);
myApp.controller('AlbumCtrl', function($scope,$timeout) {
    $scope.counter = 0;
    $scope.stopped = false;
    $scope.buttonText='Stop';
    $scope.onTimeout = function(){
        $scope.counter++;
        mytimeout = $timeout($scope.onTimeout,1000);
    }
    var mytimeout = $timeout($scope.onTimeout,1000);
    $scope.takeAction = function(){
        if(!$scope.stopped){
            $timeout.cancel(mytimeout);
            $scope.buttonText='Resume';
        }
        else
        {
            mytimeout = $timeout($scope.onTimeout,1000);
            $scope.buttonText='Stop';
        }
            $scope.stopped=!$scope.stopped;
    }   
});

filter-改编自stackoverflow的RobG代码

代码语言:javascript
复制
myApp.filter('formatTimer', function() {
  return function(input)
    {
        function z(n) {return (n<10? '0' : '') + n;}
        var seconds = input % 60;
        var minutes = Math.floor(input / 60);
        var hours = Math.floor(minutes / 60);
        return (z(hours) +':'+z(minutes)+':'+z(seconds));
    };
});
票数 7
EN

Stack Overflow用户

发布于 2014-08-10 22:39:54

代码语言:javascript
复制
function timerCtrl ($scope,$interval) {
    $scope.seconds = 0;
    var timer = $interval(function(){
        $scope.seconds++;
        $scope.$apply();
        console.log($scope.countDown);
    }, 1000);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12050268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档