angularjs make a simple countdown
来源:互联网 发布:建立数据标准化的意义 编辑:程序博客网 时间:2024/05/10 03:38
I would like make a countDown with Angular js. this is my code:
Html File
<div ng-app ng-controller = "countController"> {{countDown}} <div>
js File
function countController($scope){ $scope.countDown = 10; var timer = setInterval(function(){$scope.countDown--; console.log($scope.countDown)},1000); }
in console.log it works I have a countdown but in {{countdown}} refresh it doesn't could you help me please? thanks!
8 Answers
Please take a look at this example here. It is a simple example of a count up! Which I think you could easily modify to create a count down.
http://jsfiddle.net/ganarajpr/LQGE2/
JavaScript code:
function AlbumCtrl($scope,$timeout) { $scope.counter = 0; $scope.onTimeout = function(){ $scope.counter++; mytimeout = $timeout($scope.onTimeout,1000); } var mytimeout = $timeout($scope.onTimeout,1000); $scope.stop = function(){ $timeout.cancel(mytimeout); }}
HTML markup:
<!doctype html><html ng-app><head> <script src="http://code.angularjs.org/angular-1.0.0rc11.min.js"></script> <script src="http://documentcloud.github.com/underscore/underscore-min.js"></script></head><body><div ng-controller="AlbumCtrl"> {{counter}} <button ng-click="stop()">Stop</button> </div></body></html>
As of version 1.3 there's a service in module ng: $interval
function countController($scope, $interval){ $scope.countDown = 10; $interval(function(){console.log($scope.countDown--)},1000,0);}
use with caution:
Note: Intervals created by this service must be explicitly destroyed when you are finished with them. In particular they are not automatically destroyed when a controller's scope or a directive's element are destroyed. You should take this into consideration and make sure to always cancel the interval at the appropriate moment. See the example below for more details on how and when to do this.
From: http://docs.angularjs.org/api/ng/service/$interval
Even easier, a pre-built directive:
http://siddii.github.io/angular-timer/
You should use $scope.$apply() when you execute an angular expression from outside of the angular framework.
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/
I updated Mr. ganaraj answer to show stop and resume functionality and added angular js filter to format countdown timer
it is here on jsFiddle
controller code
'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-code adapted from RobG from stackoverflow
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)); };});
https://groups.google.com/forum/?fromgroups=#!topic/angular/2MOB5U6Io0A
Some great jsfiddle's by Igor Minar showing the use of $defer and wrapping $apply in a setInterval call.
function timerCtrl ($scope,$interval) { $scope.seconds = 0; var timer = $interval(function(){ $scope.seconds++; $scope.$apply(); console.log($scope.countDown); }, 1000);}
It might help to "How to write the code for countdown watch in AngularJS"
Step 1 : HTML Code-sample
<div ng-app ng-controller="ExampleCtrl"> <div ng-show="countDown_text > 0">Your password is expired in 180 Seconds.</div> <div ng-show="countDown_text > 0">Seconds left {{countDown_text}}</div> <div ng-show="countDown_text == 0">Your password is expired!.</div></div>
Step 2 : The AngulaJs code-sample
function ExampleCtrl($scope, $timeout) { var countDowner, countDown = 10; countDowner = function() { if (countDown < 0) { $("#warning").fadeOut(2000); countDown = 0; return; // quit } else { $scope.countDown_text = countDown; // update scope countDown--; // -1 $timeout(countDowner, 1000); // loop it again } }; $scope.countDown_text = countDown; countDowner()}
The full example over countdown watch in AngularJs as given below.
<!DOCTYPE html><html><head> <title>AngularJS Example - Single Timer Example</title> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.8/angular.min.js"></script> <script> function ExampleCtrl($scope, $timeout) { var countDowner, countDown = 10; countDowner = function() { if (countDown < 0) { $("#warning").fadeOut(2000); countDown = 0; return; // quit } else { $scope.countDown_text = countDown; // update scope countDown--; // -1 $timeout(countDowner, 1000); // loop it again } }; $scope.countDown_text = countDown; countDowner() } </script></head><body> <div ng-app ng-controller="ExampleCtrl"> <div ng-show="countDown_text > 0">Your password is expired in 180 Seconds.</div> <div ng-show="countDown_text > 0">Seconds left {{countDown_text}}</div> <div ng-show="countDown_text == 0">Your password is expired!.</div> </div></body></html>
I would like make a countDown with Angular js. this is my code:
Html File
<div ng-app ng-controller = "countController"> {{countDown}} <div>
js File
function countController($scope){ $scope.countDown = 10; var timer = setInterval(function(){$scope.countDown--; console.log($scope.countDown)},1000); }
in console.log it works I have a countdown but in {{countdown}} refresh it doesn't could you help me please? thanks!
8 Answers
Please take a look at this example here. It is a simple example of a count up! Which I think you could easily modify to create a count down.
http://jsfiddle.net/ganarajpr/LQGE2/
JavaScript code:
function AlbumCtrl($scope,$timeout) { $scope.counter = 0; $scope.onTimeout = function(){ $scope.counter++; mytimeout = $timeout($scope.onTimeout,1000); } var mytimeout = $timeout($scope.onTimeout,1000); $scope.stop = function(){ $timeout.cancel(mytimeout); }}
HTML markup:
<!doctype html><html ng-app><head> <script src="http://code.angularjs.org/angular-1.0.0rc11.min.js"></script> <script src="http://documentcloud.github.com/underscore/underscore-min.js"></script></head><body><div ng-controller="AlbumCtrl"> {{counter}} <button ng-click="stop()">Stop</button> </div></body></html>
As of version 1.3 there's a service in module ng: $interval
function countController($scope, $interval){ $scope.countDown = 10; $interval(function(){console.log($scope.countDown--)},1000,0);}
use with caution:
Note: Intervals created by this service must be explicitly destroyed when you are finished with them. In particular they are not automatically destroyed when a controller's scope or a directive's element are destroyed. You should take this into consideration and make sure to always cancel the interval at the appropriate moment. See the example below for more details on how and when to do this.
From: http://docs.angularjs.org/api/ng/service/$interval
Even easier, a pre-built directive:
http://siddii.github.io/angular-timer/
You should use $scope.$apply() when you execute an angular expression from outside of the angular framework.
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/
I updated Mr. ganaraj answer to show stop and resume functionality and added angular js filter to format countdown timer
it is here on jsFiddle
controller code
'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-code adapted from RobG from stackoverflow
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)); };});
https://groups.google.com/forum/?fromgroups=#!topic/angular/2MOB5U6Io0A
Some great jsfiddle's by Igor Minar showing the use of $defer and wrapping $apply in a setInterval call.
function timerCtrl ($scope,$interval) { $scope.seconds = 0; var timer = $interval(function(){ $scope.seconds++; $scope.$apply(); console.log($scope.countDown); }, 1000);}
It might help to "How to write the code for countdown watch in AngularJS"
Step 1 : HTML Code-sample
<div ng-app ng-controller="ExampleCtrl"> <div ng-show="countDown_text > 0">Your password is expired in 180 Seconds.</div> <div ng-show="countDown_text > 0">Seconds left {{countDown_text}}</div> <div ng-show="countDown_text == 0">Your password is expired!.</div></div>
Step 2 : The AngulaJs code-sample
function ExampleCtrl($scope, $timeout) { var countDowner, countDown = 10; countDowner = function() { if (countDown < 0) { $("#warning").fadeOut(2000); countDown = 0; return; // quit } else { $scope.countDown_text = countDown; // update scope countDown--; // -1 $timeout(countDowner, 1000); // loop it again } }; $scope.countDown_text = countDown; countDowner()}
The full example over countdown watch in AngularJs as given below.
<!DOCTYPE html><html><head> <title>AngularJS Example - Single Timer Example</title> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.8/angular.min.js"></script> <script> function ExampleCtrl($scope, $timeout) { var countDowner, countDown = 10; countDowner = function() { if (countDown < 0) { $("#warning").fadeOut(2000); countDown = 0; return; // quit } else { $scope.countDown_text = countDown; // update scope countDown--; // -1 $timeout(countDowner, 1000); // loop it again } }; $scope.countDown_text = countDown; countDowner() } </script></head><body> <div ng-app ng-controller="ExampleCtrl"> <div ng-show="countDown_text > 0">Your password is expired in 180 Seconds.</div> <div ng-show="countDown_text > 0">Seconds left {{countDown_text}}</div> <div ng-show="countDown_text == 0">Your password is expired!.</div> </div></body></html>
- angularjs make a simple countdown
- Make a Simple Gripper
- a simple search with AngularJS and PHP
- countDown
- Countdown
- How To Make A Simple iPhone Game with Cocos2D Tutorial
- How To Make A Simple iPhone Game with Cocos2D Tutorial
- How To Make A Simple Android Game with Cocos2D
- How To Make a Simple iPhone Game with Flash CS5
- How to make a simple login system with PHP
- Countdown Timer-The Simple Sales Booster That Almost Nobody Uses
- simple make file
- A simple reason why virtual functions (dynamic binding) make a big difference?
- [AngularJS] Simple Data Binding
- Can I insert a countdown timer in a Powerpoint presentation?
- [cocos2d 教程转载]How To Make A Simple iPhone Game with Cocos2D Tutorial
- Rotating Turrets: How To Make A Simple iPhone Game with Cocos2D Part 2
- Harder Monsters and More Levels: How To Make A Simple iPhone Game with Cocos2D Part 3
- 获取PB9窗口中的数据
- Git使用教程
- js函数的调用
- “南大软院大神养成计划“_第八天的学习“
- STM32方波频率测量
- angularjs make a simple countdown
- JAVA 相关技术文章链接
- jdbcTemplate的查询方法理解
- Android写文件到SDCard的简单代码
- spring 配置文件的相互引用问题
- golang按行写文件
- SQL回炉系列(四) 删除重复数据
- 设置整行代码上下移动 删除
- RASP 完爆 WAF 的5大理由!