$interval是 window.setInterval的Angular包装形式。$interval指每次延迟时间后执行响应的函数(也可以说:每次执行函数的间隔时间)。$interval多数用于计时器

备注:当你执行完这项服务后应该把它销毁。特别是当controller或者directive元素被销毁时而$interval未被销毁。你应该考虑到在适当的时候取消interval事件。

   $interval  ( fn , delay , [count] , [invokeApply] , [Pass] );

              fn:      一个将被反复执行的函数。
             delay:  每次调用的间隔毫秒数值。
             count:  循环次数的数值,如果没设置,则无限制循环。
             invokeApply: 如果设置为false,则避开脏值检查,否则将调用$apply。
             Pass:  函数的附加参数。

timeout函数的返回值是一个promise,当到达设置的超时时间时,这个承诺将被解决,并执行timeout函数。  $timeout多数用于事件延迟(延迟多长时间后,处理什么事情)
     如果想要取消timeout,需要调用$timeout.cancel(promise);

    $timeout(  fn , [delay] , [invokeApply] );
          fn:一个将被延迟执行的函数。
          delay:延迟的时间(毫秒)。
          invokeApply:如果设置为false,则跳过脏值检测,否则将调用$apply。

    下面来看一个定时器的例子:

            

这面截图的例子可用在手机获取验证码的部分功能,其功能的实现就用到了 $interval 定时器,

interval.html

<!DOCTYPE html>
<html>
<meta charset="utf-8">
<script src="js/angular.min.js" type="text/javascript"></script>
<script src="js/interval1.js"></script>
<style>
button{
padding:10px;
border:none;
border-radius: 5px;
background: deepskyblue;
color: #ffffff;
}
</style>
<body>
<div ng-app="myApp" ng-controller="myCtrl">
<button class="button gettestcode col-40" ng-click="getTestCode()"
ng-bind="description" ng-disabled="canClick">
</button>
</div>
</body>
</html>

interval.js

var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope,$interval) {
$scope.canClick=false;
$scope.description = "获取验证码";
var second=59;
var timerHandler;
$scope.getTestCode = function(){
timerHandler =$interval(function(){
if(second<=0){
$interval.cancel(timerHandler); //当执行的时间59s,结束时,取消定时器 ,cancle方法取消
second=59;
$scope.description="获取验证码";
$scope.canClick=false; //因为 ng-disabled属于布尔值,设置按钮可以点击,可点击发送
}else{
$scope.description=second+"s后重发";
second--;
$scope.canClick=true;
}
},1000) //每一秒执行一次$interval定时器方法
};
});

最新文章

  1. Atitit.可视化与报表原理与概论
  2. Linux下C程序的内存布局
  3. 微信接口access_token
  4. js - 驼峰命名
  5. ocp 1Z0-043 131-205题解析
  6. WinForms 实现气泡提示窗口
  7. ARMv7 .n和.w指令宽度指示符后缀
  8. 安卓系统浏览器中select下拉按钮无法弹出选择面板奇怪问题解决
  9. React native android 最常见的10个问题
  10. 移动端利用rem实现自适应布局
  11. Python的文件及异常
  12. ViewPager实现首次进入软件时左右滑屏的软件展示效果
  13. DRF认证组件流程分析
  14. Docker for Windows 中文文档(3)——Docker Settings
  15. 近几年杭电OJ大型比赛题目合集【更新到2017年11月初】
  16. yum 快速安装centos7 mysql5.7
  17. 4A - 排序
  18. webpack原理与实战
  19. 在执行context.getContentResolver.query()方法时出现错误。
  20. CF45G Prime Problem 构造+数论

热门文章

  1. POJ1751 Highways 2017-04-14 15:46 70人阅读 评论(0) 收藏
  2. 机器学习—集成学习(GBDT)
  3. js判断是移动端还是PC端访问网站
  4. 2:C#TPL探秘
  5. Cesium开发实践汇总
  6. WP8.1StoreApp(WP8.1RT)---发送邮件和短信
  7. OpenStack虚机网卡的创建过程
  8. c++实验6 递归
  9. leecode刷题(19)-- 最长公共前缀
  10. 那些令人敬佩的刚学OI的大佬