{{countString}}
当前位置:首页 > 日记 > 正文

vue 计时器组件的实现代码

vue 计时器组件的实现代码

整理文档,搜刮出一个vue 计时器组件的代码,稍微整理精简一下做下分享。

<template> <div>  <span     :sendSync="sendSync"     :autoStart="autoStart"     :defaultVal="defaultVal"  >{{countString}}</span> </div></template><script>export default { data() {  return {   isStart: false,   globalTimer: null,//获取setInterval对象值   countString: '0秒', //用来显示时间   day: 0,   hour: 0,   minute: 0,   second: 0,   millisecond: 0,   countVal: this.defaultVal, //获取初始值   pauseTime: 0,  } }, watch: {  'countString': {   deep: true,   handler: function(val, oldVal) {    var vm = this    if (vm.needSendSunc) {     vm.passToParent(val)    }   }  },  'needSendSunc': {   deep: true,   handler: function(val) {    var vm = this    if (val) {     vm.passToParent(vm.countString)    }   }  } }, props: {  sendSync: {   type: Boolean,   default: false,  },  autoStart: {   type: Boolean,   default: false,  },  defaultVal: {   type: Number,   default: 0,  } }, mounted() {  var vm = this  if (vm.autoStart) {   vm.startCountFn()  } }, computed: {  needSendSunc: function() {   return this.sendSync  } }, created: function() {  this.$on('startCount', function() {   this.startCountFn()  });  this.$on('stopCount', function() {   this.stopCountFn()  }); }, components: {}, methods: {  counterFn: function(counterTime) {   var vm = this   var nowDate = new Date().getTime()   if(vm.pauseTime == 0){    var num = nowDate - counterTime //计算时间毫秒差   }else{    vm.pauseTime = vm.pauseTime +10    var num = vm.pauseTime - counterTime //计算时间毫秒差   }   var leave1 = num % (24 * 3600 * 1000)  //计算天数后剩余的毫秒数   var leave2 = leave1 % (3600 * 1000)    //计算小时数后剩余的毫秒数   var leave3 = leave2 % (60 * 1000)   //计算分钟数后剩余的毫秒数   vm.day = Math.floor(num / (24 * 3600 * 1000)) //计算相差天数   vm.hour = Math.floor(leave1 / (3600 * 1000))//计算相差小时   vm.minute = Math.floor(leave2 / (60 * 1000))//计算相差分钟   vm.second = Math.round(leave3 / 1000) //计算相差秒   if (vm.day > 0) {    vm.countString = `${vm.day}天 ${vm.hour}小时 ${vm.minute}分 ${vm.second}秒`;   } else if (vm.hour > 0) {    vm.countString = `${vm.hour}小时 ${vm.minute}分 ${vm.second}秒`;   } else if (vm.minute > 0) {    vm.countString = `${vm.minute}分 ${vm.second}秒`;   } else {    vm.countString = `${vm.second}秒`;   }  },  startCountFn: function() {   var vm = this   if (!vm.isStart) {    vm.countVal = vm.countVal ? vm.countVal : new Date().getTime()    var timer = setInterval(function() {     vm.counterFn(vm.countVal)    }, 10)    vm.globalTimer = timer    vm.isStart = true   }  },  stopCountFn: function() {   var vm = this   if (vm.isStart) {    window.clearInterval(vm.globalTimer)    vm.globalTimer = null;    vm.isStart = false    vm.pauseTime = new Date().getTime()   }  },  passToParent: function(data) {   var vm = this   this.$emit("getDataFromChild", data)  }, }}</script><style></style>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

相关文章

CSS位置设置元素定位模式详细解决

CSS位置设置元素定位模式详细解决

模式,设置,位置,元素定位,解决方案,首先,简要介绍 CSS的位置属性设置了元素的位置来定义要放置的元素的位置规则。 1,位置元素(定位元素)在位置属性划分为:相对(相对)、绝对(绝对)、固定(固定)或粘性(粘性)元素之后计算。 2个,顶部,右,左,左属性指定位置…

Windows下MySQL启动1067的解决方案

Windows下MySQL启动1067的解决方案

解决方案,启动,电脑软件,Windows,MySQL,前几天,我刚进去安装mysql刚刚开始。今天,公司发现公司不能启动服务报告1067个错误,在网上看到了一些方法,很多版本,下面是我的解决方案: 1。打开运行事件查看器——Windows日志——应用程序——找到错误…

如何使用word2013屏幕截图

如何使用word2013屏幕截图

屏幕截图,如何使用,电脑软件,  当我们使用word文档做学习笔记时,经常要把pdf文件中大块重要的文字截图保存在word文档中。那么下面就由小编给大家分享下使用word2013屏幕截图的技巧,希望能帮助到您,有需要的朋友可以来看看哦。使用屏幕截图…

浅谈NodeJs之数据库异常处理

浅谈NodeJs之数据库异常处理

异常处理,数据库,浅谈,电脑软件,NodeJs,本文介绍了NodeJs之数据库异常处理,分享给大家,具体如下:NodeJs版本:4.4.4数据库链接错误使用nodejs处理异常最麻烦不过,这里我抛开nodejs提供的domain和一些第三方库专门处理的东西。操作数据库是我们常…

解决VS2017不能打开stdio.h等文件

解决VS2017不能打开stdio.h等文件

文件,电脑软件,stdio,从另一台机器上复制过来的项目,由于两台机器的库目录不一致,导致了stdio.h等很多文件都打不开:解决的办法是从新设置包含目录。选择项目-->%项目名称%属性-->VC++目录,设置包含目录为C:\Program Files %28x86%29\Windows…

Node.js学习之TCP/IP数据通讯 | 实

Node.js学习之TCP/IP数据通讯 | 实

学习,实例,数据通讯,电脑软件,Node,1.使用net模块实现基于TCP的数据通讯提供了一个net模块,专用于实现TCP服务器与TCP客户端之间的通信1.1创建TCP服务器在Node.js利用net模块创建TCP服务器var server = net.createServer([options],[connect…

ps怎么设计圆形的中间凸起的水晶按

ps怎么设计圆形的中间凸起的水晶按

按钮,水晶,电脑软件,ps,ps中想要绘制一个圆形的按钮,该怎么绘制呢?下面我们就来看看详细的教程。软件名称:Adobe Photoshop 8.0 中文完整绿色破解版软件大小:150.1MB更新时间:2015-11-041、新建图层命名为&rdquo;椭圆一&ldquo;,大小自定,把画布填…

qq安全中心无法绑定的解决方法

qq安全中心无法绑定的解决方法

安全中心,绑定,解决方法,方法,电脑软件,  互联网安全问题频繁发生,聊天软件被盗号的情况数不胜数,所以如何为自己的聊天软件加上防御装备已经必不可少。今天小编就来教大家使用手机QQ安全中心给自己的QQ加固防御,qq安全中心绑定的方法。qq安…

主流服务器网卡Teaming模式配置

主流服务器网卡Teaming模式配置

模式,服务器,网卡,配置,主流,  目前市面上服务器网卡中Intel和Broadcom较为常见,本文就以此两个品牌的网卡Teaming模式的配置进行介绍。一、测试使用的网卡:Intel:Intel PRO/1000 PT Dual Port Server Adapter芯片组:Intel 82571GB Gigabit C…

虚拟内存怎么设置最好

虚拟内存怎么设置最好

设置,虚拟内存,电脑软件,虚拟内存的设定能够有效地提高电脑的运行速度,虚拟内存怎么设置最好?优化windows虚拟内存的具体操作方法如下:1、单击&ldquo;高级系统设置&rdquo;超链接右击桌面上的&ldquo;计算机&rdquo;图标,在弹出的快捷菜单中选择&l…

如何更换鼠标指针

如何更换鼠标指针

鼠标指针,电脑软件,用惯了系统自带的鼠标指针,觉得电脑指针不够个性,不是自己喜欢的。今天小编就给大家分享如何更换鼠标指针。首先搜索鼠标指针美化,下载自己喜欢的指针样式。然后指针安装包解压出来,再找到本套鼠标里的安装配置文件,也就是*.i…

angularjs实现搜索的关键字在正文

angularjs实现搜索的关键字在正文

正文,搜索,关键字,电脑软件,angularjs,1、定义高亮 filter我们希望搜索的关键字在正文中高亮出来,正文内容就是过滤器的第一个参数,第二个参数就是搜索关键字,这样,我们的过滤器将会有两个参数了。高亮的原理很简单,将需要高亮的内容使用 span …