vue實現倒計時的外掛 時間戳 重新整理 跳轉 都不影響
阿新 • • 發佈:2019-02-14
https://www.cnblogs.com/sichaoyun/p/6645042.html
工作當中需要開發一個倒計時外掛,於是開始網上先拿來主義,發現好多倒計時的外掛,重新整理都會變成從頭再來,於是自己用vue2.0寫了一個外掛,測試已經通過,直接上程式碼
如下是元件程式碼:
<template> <span :endTime="endTime" :callback="callback" :endText="endText"> <slot> {{content}} </slot> </span> </template> <script> export default { data(){ return { content: '', } }, props:{ endTime:{ type: String, default :'' }, endText:{ type : String, default:'已結束' }, callback : { type : Function, default :'' } }, mounted () { this.countdowm(this.endTime) }, methods: { countdowm(timestamp){ let self = this; let timer = setInterval(function(){ let nowTime = new Date(); let endTime = new Date(timestamp * 1000); let t = endTime.getTime() - nowTime.getTime(); if(t>0){ let day = Math.floor(t/86400000); let hour=Math.floor((t/3600000)%24); let min=Math.floor((t/60000)%60); let sec=Math.floor((t/1000)%60); hour = hour < 10 ? "0" + hour : hour; min = min < 10 ? "0" + min : min; sec = sec < 10 ? "0" + sec : sec; let format = ''; if(day > 0){ format = `${day}天${hour}小時${min}分${sec}秒`; } if(day <= 0 && hour > 0 ){ format = `${hour}小時${min}分${sec}秒`; } if(day <= 0 && hour <= 0){ format =`${min}分${sec}秒`; } self.content = format; }else{ clearInterval(timer); self.content = self.endText; self._callback(); } },1000); }, _callback(){ if(this.callback && this.callback instanceof Function){ this.callback(...this); } } } } </script>
下面是呼叫元件程式碼:
<count-down endTime="1490761620" :callback="callback" endText="已經結束了"></count-down>
引入上面程式碼之後 換要在vue的methods里加上callback回撥函式
ednTime 是時間結束之後的時間戳 callback是結束之後的回撥 endText是結束之後的文字顯示!