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 相关文章推荐
jquery 分页控件实现代码
Nov 30 Javascript
IE不支持getElementsByClassName最终完美解决方案
Dec 17 Javascript
javascript不同类型数据之间的运算的转换方法
Feb 13 Javascript
jquery移动点击的项目到列表最顶端的方法
Jun 24 Javascript
jQuery移动web开发中的页面初始化与加载事件
Dec 03 Javascript
Hallo.js基于jQuery UI所见即所得的Web编辑器
Jan 26 Javascript
jquery ajax双击div可直接修改div中的内容
Mar 04 Javascript
jQuery插件zTree实现的基本树与节点获取操作示例
Mar 08 Javascript
微信小程序如何获取用户信息
Jan 26 Javascript
微信小程序实现图片滚动效果示例
Dec 05 Javascript
layui radio单选限制下一个radio单选的实例
Sep 03 Javascript
JS如何把字符串转换成json
Feb 21 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
单一index.php实现PHP任意层级文件夹遍历(Zjmainstay原创)
2012/07/31 PHP
提升PHP性能的21种方法介绍
2013/06/25 PHP
PHP实现支付宝即时到账功能
2016/12/21 PHP
Laravel 批量更新多条数据的示例
2017/11/27 PHP
php fread函数使用方法总结
2019/05/28 PHP
jQuery实现可收缩展开的级联菜单实例代码
2013/11/27 Javascript
jQuery实现带滚动导航效果的全屏滚动相册实例
2015/06/19 Javascript
浅析JavaScript访问对象属性和方法及区别
2015/11/16 Javascript
详解JavaScript中数组和字符串的lastIndexOf()方法使用
2016/03/13 Javascript
使用angular帮你实现拖拽的示例
2017/07/05 Javascript
EL表达式截取字符串的函数说明
2017/09/22 Javascript
JS获取input[file]的值并显示在页面的实现方法
2018/03/09 Javascript
jQuery实现文字超过1行、2行或规定的行数时自动加省略号的方法
2018/03/28 jQuery
浅谈vue-props的default写不写有什么区别
2020/08/09 Javascript
python实现简单socket程序在两台电脑之间传输消息的方法
2015/03/13 Python
Python数据结构之栈、队列的实现代码分享
2017/12/04 Python
Python 解决中文写入Excel时抛异常的问题
2018/05/03 Python
在IPython中进行Python程序执行时间的测量方法
2018/11/01 Python
解决Python pandas plot输出图形中显示中文乱码问题
2018/12/12 Python
python 多线程对post请求服务器测试并发的方法
2019/06/13 Python
使用 Python 处理 JSON 格式的数据
2019/07/22 Python
为什么相对PHP黑python的更少
2020/06/21 Python
通过HTML5 Canvas API绘制弧线和圆形的教程
2016/03/14 HTML / CSS
智能室内花园:Click & Grow
2021/01/29 全球购物
Linux内核产生并发的原因
2012/07/13 面试题
什么是makefile? 如何编写makefile?
2013/01/02 面试题
应用化学专业本科生求职信
2013/09/29 职场文书
毕业典礼演讲稿
2014/05/13 职场文书
2014年学生会部门工作总结
2014/11/07 职场文书
2014年档案室工作总结
2014/12/01 职场文书
2014年挂职干部工作总结
2014/12/06 职场文书
2015年艾滋病宣传活动总结
2015/03/27 职场文书
教师学习中国梦心得体会
2016/01/05 职场文书
Linux安装Nginx步骤详解
2021/03/31 Servers
使用redis生成唯一编号及原理示例详解
2021/09/15 Redis
解决springboot druid数据库连接失败后一直重连的方法
2022/04/19 Java/Android