Vue 短信验证码组件开发详解


Posted in Javascript onFebruary 14, 2017

Vue.js(读音 /vjuː/, 类似于 view)是一个构建数据驱动的 web 界面的库。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

Vue.js 自身不是一个全能框架——它只聚焦于视图层。因此它非常容易学习,非常容易与其它库或已有项目整合。另一方面,在与相关工具和支持库一起使用时,Vue.js 也能完美地驱动复杂的单页应用。

摘要:

1、该组件基于Vue 2.1.X版本;

1、 Vue 组件代码如下:

Vue.component('timerBtn',{
  template: '<button v-on:click="run" :disabled="disabled || time > 0">{{ text }}</button>',
  props: {
    second: {
      type: Number,
      default: 60
    },
    disabled: {
      type: Boolean,
      default: false
    }
  },
  data:function () {
   return {
     time: 0
   }
  },
  methods: {
    run: function () {
     this.$emit('run');
    },
    start: function(){
     this.time = this.second;
     this.timer();
    },
    stop: function(){
     this.time = 0;
     this.disabled = false;
    },
    setDisabled: function(val){
     this.disabled = val;
    },
    timer: function () {
      if (this.time > 0) {
        this.time--;
        setTimeout(this.timer, 1000);
      }else{
       this.disabled = false;
      }
    }
  },
  computed: {
    text: function () {
      return this.time > 0 ? this.time + 's 后重获取' : '获取验证码';
    }
  }
});

2、使用方式:

<timer-btn ref="timerbtn" class="btn btn-default" v-on:run="sendCode" 
:disabled="disabled" :second="60"></timer-btn>

disabled 建议不要绑定,我们可以通过调用组件的setDisabled方法来切换按钮可用状态;

second 初始值60s 没特别值可以不绑定;

所以我们可以在HTML页面这样:

<timer-btn ref="timerbtn" class="btn btn-default" v-on:run="sendCode" ></timer-btn>

JS这样:

var vm = new Vue({
  el:'#app',
  methods:{
    sendCode:function(){
      vm.$refs.timerbtn.setDisabled(true); //设置按钮不可用
      hz.ajaxRequest("sys/sendCode?_"+$.now(),function(data){
        if(data.status){
          vm.$refs.timerbtn.start(); //启动倒计时
        }else{
          vm.$refs.timerbtn.stop(); //停止倒计时
        }
      });
    },
  }
});

以上所述是小编给大家介绍的Vue 短信验证码组件开发详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
Js+XML 操作
Sep 20 Javascript
索趣科技的答案
Feb 07 Javascript
boxy基于jquery的弹出层对话框插件扩展应用 弹出层选择器
Nov 21 Javascript
JS动态显示表格上下frame的方法
Mar 31 Javascript
JavaScript+CSS无限极分类效果完整实现方法
Dec 22 Javascript
javascript函数自动执行常用方法汇总
Mar 28 Javascript
AngularJS使用ng-repeat和ng-if实现数据的删选显示效果示例【适用于表单数据的显示】
Dec 13 Javascript
浅谈VUE-CLI脚手架热更新太慢的原因和解决方法
Sep 28 Javascript
JavaScript使用表单元素验证表单的示例代码
Aug 20 Javascript
基于jquery ajax的多文件上传进度条过程解析
Sep 11 jQuery
微信小程序 函数防抖 解决重复点击消耗性能问题实现代码
Sep 12 Javascript
详解ES6 扩展运算符的使用与注意事项
Nov 12 Javascript
JS去除字符串中空格的方法
Feb 14 #Javascript
Node.js与Sails redis组件的使用教程
Feb 14 #Javascript
JS表单验证方法实例小结【电话、身份证号、Email、中文、特殊字符、身份证号等】
Feb 14 #Javascript
canvas实现十二星座星空图
Feb 14 #Javascript
JavaScript省市级联下拉菜单实例
Feb 14 #Javascript
jqGrid翻页时数据选中丢失问题的解决办法
Feb 13 #Javascript
jQuery实现用户输入自动完成功能
Feb 13 #Javascript
You might like
PHP网页游戏学习之Xnova(ogame)源码解读(一)
2014/06/23 PHP
PHP动态规划解决0-1背包问题实例分析
2015/03/23 PHP
PHP利用imagick生成组合缩略图
2016/02/19 PHP
PHP+JS三级菜单联动菜单实现方法
2016/02/24 PHP
laravel 解决后端无法获取到前端Post过来的值问题
2019/10/22 PHP
js 有框架页面跳转(target)三种情况下的应用
2013/04/09 Javascript
jQuery之日期选择器的深入解析
2013/06/19 Javascript
JS正则表达式大全(整理详细且实用)
2013/11/14 Javascript
javascript实现文本域写入字符时限定字数
2014/02/12 Javascript
JS数组的赋值介绍
2014/03/10 Javascript
自编jQuery插件实现模拟alert和confirm
2014/09/01 Javascript
jQuery插件实现静态HTML验证码校验
2015/11/06 Javascript
详解vue-cli快速构建vue应用并实现webpack打包
2017/12/13 Javascript
使用element-ui table expand展开行实现手风琴效果
2019/03/15 Javascript
[43:51]2014 DOTA2国际邀请赛中国区预选赛 Dream Times VS TongFu
2014/05/22 DOTA
python实现2014火车票查询代码分享
2014/01/10 Python
python实现斐波那契递归函数的方法
2014/09/08 Python
Python减少循环层次和缩进的技巧分析
2016/03/15 Python
python Crypto模块的安装与使用方法
2017/12/21 Python
python实现多线程网页下载器
2018/04/15 Python
tensorflow获取预训练模型某层参数并赋值到当前网络指定层方式
2020/01/24 Python
python3 sorted 如何实现自定义排序标准
2020/03/12 Python
Python脚本如何在bilibili中查找弹幕发送者
2020/06/04 Python
Python 字典一个键对应多个值的方法
2020/09/29 Python
基于HTML5+Webkit实现树叶飘落动画
2017/12/28 HTML / CSS
HTML5 Canvas实现360度全景图的示例代码
2018/01/29 HTML / CSS
LN-CC英国:伦敦时尚生活的缩影
2019/09/01 全球购物
万豪国际住宅与别墅集团:Homes & Villas by Marriott International
2020/10/08 全球购物
最新的大学生找工作自我评价
2013/09/29 职场文书
大学应届生求职简历的自我评价
2013/10/08 职场文书
职专应届生求职信
2013/11/16 职场文书
文明餐桌行动实施方案
2014/02/19 职场文书
钓鱼岛事件感想
2015/08/11 职场文书
2016年九九重阳节活动总结
2016/04/01 职场文书
详解缓存穿透击穿雪崩解决方案
2021/05/28 Redis
SQL Server Agent 服务无法启动
2022/04/20 SQL Server