AngularJS $timeout和 $interval ,定时器手机验证码倒计时
$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定时器方法
};
});
AngularJS $timeout和 $interval ,定时器手机验证码倒计时的更多相关文章
- 原生 JS 实现手机验证码倒计时
可以使用 pointer-events 来阻止元素成为鼠标事件的 target.html5 新增操作元素 class 类名的方式 classList. classList 方法 add(value): ...
- js获取手机验证码倒计时的实现
方案一 <div class="div user-input"> <input type="number" class="code& ...
- wepy 小程序定时器(验证码倒计时) 数据绑定页面无刷新
每次改变数据的时候记得调用 this.$apply() 验证码倒计时 使用的vant-weapp UI组件 wxml: <van-col span="10" style= ...
- 【jQuery】手机验证码倒计时效果
<ul class="ulist"> <li class="group"> <label class="label&qu ...
- 微信小程序发送手机验证码---倒计时
var currentTime = 59 //倒计时的事件(单位:s)var interval = null //倒计时函数 Page({ data: { time:59 //倒计时 }, onLoa ...
- jquery实现获取手机验证码倒计时效果
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- vue获取验证码倒计时
<template> <div> <el-button :disabled="disabled" @click="sendcode" ...
- Angular 定时器$timeout和$interval,延时调用
项目中有用到定时器定时刷新页面的数据,在网上查看了一些资料,整理了一下,备忘. $timeout 用法如下:$timeout(fn,[delay],[invokeApply]); fn:一个将被延迟执 ...
- ios 手机验证码用户注册(倒计时15秒)
// // ViewController.m // register手机验证码注册 // // Created by zzqqrr on 17/8/28. // Copyright (c) 2017年 ...
随机推荐
- HttpClient Timeout
1. Overview This tutorial will show how to configure a timeout with the Apache HttpClient 4. If you ...
- 12、Docker的网络--bridge
单机网络 Bridge Network Host Network None Network 多机网络 Overlay Network 12.1 网络命名空间 启动一个容器 docker run - ...
- 封装MongoDB的 asp.net 链接类
using System;using System.Collections.Generic;using System.Linq;using MongoDB; /// <summary>// ...
- 基于JWT的web api身份验证及跨域调用实践
随着多终端的出现,越来越多的站点通过web api restful的形式对外提供服务,很多网站也采用了前后端分离模式进行开发,因而在身份验证的方式上可能与传统的基于cookie的Session Id的 ...
- vue+elementui后台管理快捷代码片段
Form <el-form labelPosition="right" labelWidth="10%" size="small" : ...
- SQL 从数据库中随机取n条数据
用NEWID()方法. * ,NEWID() AS random from [toblename] order by random 其中的1可以换成其他任意整数,表示取的数据条数
- jQuery查找标签--选择器,筛选器,模态对话框, 左侧菜单栏
查找标签 选择器: 基本选择器(同css) id选择器 $("#id") 标签选择器 $('tagName') class选择器 $(".className") ...
- PHP设计超级好用的文件上传处理类一 (37)
<?php class FileUpload { private $filepath; //指定上传文件保存的路径 private $allowtype=array('gif', 'jpg', ...
- 【OCP 12c】最新CUUG OCP-071考试题库(62题)
62.(13-17)choose the best answer: You need to list the employees in DEPARTMENT_ID 30 in a single row ...
- [HTML] <meta name="viewport" content="width=device-width,initial-scale=1.0">释义
<meta name="viewport" content="width=device-width,initial-scale=1.0">这是 HT ...