工作当中需要开发一个倒计时插件,于是开始网上先拿来主义,发现好多倒计时的插件,刷新都会变成从头再来,于是自己用vue2.0写了一个插件,测试已经通过,直接上代码

如下是组件代码:

  1. <template>
  2. <span :endTime="endTime" :callback="callback" :endText="endText">
  3. <slot>
  4. {{content}}
  5. </slot>
  6. </span>
  7. </template>
  8. <script>
  9. export default {
  10. data(){
  11. return {
  12. content: '',
  13. }
  14. },
  15. props:{
  16. endTime:{
  17. type: String,
  18. default :''
  19. },
  20. endText:{
  21. type : String,
  22. default:'已结束'
  23. },
  24. callback : {
  25. type : Function,
  26. default :''
  27. }
  28. },
  29. mounted () {
  30. this.countdowm(this.endTime)
  31. },
  32. methods: {
  33. countdowm(timestamp){
  34. let self = this;
  35. let timer = setInterval(function(){
  36. let nowTime = new Date();
  37. let endTime = new Date(timestamp * 1000);
  38. let t = endTime.getTime() - nowTime.getTime();
  39. if(t>0){
  40. let day = Math.floor(t/86400000);
  41. let hour=Math.floor((t/3600000)%24);
  42. let min=Math.floor((t/60000)%60);
  43. let sec=Math.floor((t/1000)%60);
  44. hour = hour < 10 ? "0" + hour : hour;
  45. min = min < 10 ? "0" + min : min;
  46. sec = sec < 10 ? "0" + sec : sec;
  47. let format = '';
  48. if(day > 0){
  49. format = `${day}天${hour}小时${min}分${sec}秒`;
  50. }
  51. if(day <= 0 && hour > 0 ){
  52. format = `${hour}小时${min}分${sec}秒`;
  53. }
  54. if(day <= 0 && hour <= 0){
  55. format =`${min}分${sec}秒`;
  56. }
  57. self.content = format;
  58. }else{
  59. clearInterval(timer);
  60. self.content = self.endText;
  61. self._callback();
  62. }
  63. },1000);
  64. },
  65. _callback(){
  66. if(this.callback && this.callback instanceof Function){
  67. this.callback(...this);
  68. }
  69. }
  70. }
  71. }
  72. </script>

下面是调用组件代码:

<count-down endTime="1490761620" :callback="callback" endText="已经结束了"></count-down>

引入上面代码之后 换要在vue的methods里加上callback回调函数

ednTime 是时间结束之后的时间戳  callback是结束之后的回调  endText是结束之后的文字显示!

vue实现倒计时的插件 时间戳 刷新 跳转 都不影响的更多相关文章

  1. vue2.0实现倒计时的插件(时间戳 刷新 跳转 都不影响)

    我发现好多倒计时的插件,刷新都会变成从头再来,于是自己用vue2.0写了一个,测试通过,直接上代码 如下是组件代码: <template> <span :endTime=" ...

  2. vue路由在keep-alive下的刷新问题 对watch的影响

    转载自:https://www.cnblogs.com/dansingal/p/8302100.html 问题描述: 在keep-alive中的在跳转到指定的路由时刷新对应的路由,其余不刷新. 1 2 ...

  3. vue axios封装以及登录token过期跳转问题

    Axios配置JWT/封装插件/发送表单数据 首先请务必已仔细阅读 Axios 文档并熟悉 JWT: 中文文档 JWT 中文文档 安装 npm install axios npm install es ...

  4. [前端] VUE基础 (6) (v-router插件、获取原生DOM)

    一.v-router插件 1.v-router插件介绍 v-router是vue的一个核心插件,vue+vue-router主要用来做SPA(单页面应用)的. 什么是SPA:就是在一个页面中,有多个页 ...

  5. VUE常用UI组件插件及框架

    UI组件及框架 element - 饿了么出品的Vue2的web UI工具套件 mint-ui - Vue 2的移动UI元素 iview - 基于 Vuejs 的开源 UI 组件库 Keen-UI - ...

  6. 利用history实现无刷新跳转界面

    看标题是不是感觉很拽的样子,其实没什么啦,也就是时下常说的单页面应用.这种web形式在如今的移动端十分流行,毕竟在移动端频繁得去刷新界面不是很友好,而且还费流量.今天我们要做一个小的app(移动端), ...

  7. vue.js国际化vue-i18n插件的使用问题,在模版文本、组件方法、jsf方法里的使用

    vue.js国际化vue-i18n插件的使用问题,在模版文本.组件方法.jsf方法里的使用 1.在文本里使用{{$t("xxx")}} <span>{{$t(" ...

  8. vue全局使用axios插件请求ajax

    vue全局使用axios插件请求ajax Vue 原本有一个官方推荐的 ajax 插件 vue-resource,但是自从 Vue 更新到 2.0 之后,官方宣布停止更新vue-resource,并推 ...

  9. js_倒计时去执行函数或则跳转页面

    js_倒计时去执行函数或则跳转页面: var wait = 5; $(document).ready(function () { returnPage(); }); function returnPa ...

随机推荐

  1. 浏览器特权域XSS漏洞

    导语:科普什么是浏览器特权域XSS,可以用来干什么? 作者:天析 团队:Arctic Shell 为什么科普这个? 今天在群里看到有表姐说这个,然后恰好又有学姐在问什么是特权域XSS,于是就来说说这个 ...

  2. [Element-UI] 使用Element-UI的DateTimePicker组件报错:Cannot read property 'getHours' of undefined

    使用Element-UI组件的DateTimePicker,如下: <template> <div class="block"> <span clas ...

  3. Windows Service 项目中 Entity Framework 无法加载的问题

    Windows Service 项目引用了别的类库项目,别的项目用到了 Entity Framework(通过Nuget引入),但是我的 Windows Service 无法开启,于是我修改了 App ...

  4. TCP连接详解

    一. 连接过程示意图 二. 建立TCP连接 2.1 三次握手 第一次握手:建立连接.客户端发送连接请求报文段,将SYN置为1,Sequence Number为x:然后,客户端进入SYN_SEND状态, ...

  5. 组件基础(参数校验和动态组件、v-once)—Vue学习笔记

    最最最后一点关于组件传值的问题. 提醒:本篇内容请使用Vue.js开发版!(附带完成的警告和提示) 1.组件的参数校验 父组件向子组件传值,子组件可以决定传值的一些限制. 比如,子组件指向接收Stri ...

  6. 机器学习基石笔记:15 Validation

    一.模型选择问题 如何选择? 视觉上 NO 不是所有资料都能可视化;人脑模型复杂度也得算上. 通过Ein NO 容易过拟合;泛化能力差. 通过Etest NO 能保证好的泛化,不过往往没法提前获得测试 ...

  7. 小程序/js监听输入框验证金额

    refundAmoutInput: function(event){ var value = event.detail.value; if (value.split('.')[0].length &g ...

  8. android的电话监听

    android的电话监听 新建一个项目,结构图如下: PhoneService: package com.demo.tingdianhua; import android.app.Service; i ...

  9. Shell脚本 | 一键获取安卓应用活动名

    上篇文章提到,启动时间的计算需要用到应用启动页的活动名(Activity_Name). 如何获取活动名呢?通常有如下几种方式: 1.询问 Dev 同事 2.adb logcat ActivityMan ...

  10. 在linux下实现mysql自动备份数据

    使用的系统为CentOS,mysql版本为5.6 备份功能主要利用以下功能实现: mysql命令中的mysqldump命令 linux下脚本编写 linux下crontab定时任务的使用 首先确定你要 ...