作者 混元霹靂手-Ziksang
接下來的時候我想關注於node.js等一系前端知識,但是這個時間倒數計時元件真的很突如其來,就在昨天,因為公司需求,要做一個倒數計時,ok那沒有問題,對於倒數計時來說,一點都不難,肯定大家都寫過,但是基於vue又是怎麼樣的原理,又如何去書寫,那就來把。不費話不,不BB,直接上程式碼
接下來還是按著我們約定的來
2.程式碼執行vue-cli 2.1版本
3.元件程式碼都在components資料夾裡
4.主程式碼邏輯都在 App.vue資料夾裡
我什麼都不要我只要
贊
components/zkTimeDown/zkTimeDown.vue
<template>
<p>{{time}}</p>
</template>
<script>
export default{
data () {
return {
time : '',
flag : false
}
},
mounted () {
let time = setInterval(()=>{
if(this.flag == true){
clearInterval(time)
}
this.timeDown()
},500)
},
props : {
endTime : {
type : String
}
},
methods : {
timeDown () {
const endTime = new Date(this.endTime)
const nowTime = new Date();
let leftTime = parseInt((endTime.getTime()-nowTime.getTime())/1000)
let d = parseInt(leftTime/(24*60*60))
let h = this.formate(parseInt(leftTime/(60*60)%24))
let m = this.formate(parseInt(leftTime/60%60))
let s = this.formate(parseInt(leftTime%60))
if(leftTime <= 0){
this.flag = true
this.$emit('time-end')
}
this.time = `${d}天${h}小時${m}分${s}秒`
},
formate (time) {
if(time>=10){
return time
}else{
return `0${time}`
}
}
}
}
</script>複製程式碼
這玩意真一眼就看明白了
1.props : 首先我們要接收父元件一個資料props裡,我們要接收的是一個結束時間
2.methods : formate我們是對時間的時分秒進行了格式化
timeDown方法我們對倒數計時的寫法在,主要是把結束時間和當前時相減,然後再轉化面毫秒進行天·時·分·秒的計算,lefttime為0的時候,我們進行關閉定時器,再向外通知時間結束,觸發end-time事件
App.vue
<template>
<div>
<zk-time-down @time-end="message = '倒數計時結束'" :endTime='endTime'></zk-time-down>
<p>{{message}}</p>
</div>
</template>
<script>
import zkTimeDown from './components/zkTimeDown/zkTimeDown.vue'
export default {
components : {
zkTimeDown
},
data () {
return {
message : '正在倒數計時',
endTime : '2017-04-08 10:06:00'
}
}
}
</script>
<style>
</style>複製程式碼
如果大家要試的話,請改變當前data裡endTime的時間,一定要大於當前時間,我省去了做驗證的一部分
我們在元件上監聽倒數計時時間,當倒數計時時間結束的時候,觸發一個事件,基於這個倒數計時,大家可以充分的去想象一下別的更有趣倒數計時的用法,和寫法,和一些根據自己的業務邏輯去自定義一些倒數計時的邏輯。
這期分享的比較簡短,因為例子也不難,大家很容易消化,我所分享的也不是什麼高深的東西,都是實際工作中需要用到的東西,謝謝
渣渣前端開發工程師,喜歡鑽研,熱愛分享和講解教學, 微信 zzx1994428 QQ494755899
支援我繼續創作和感到有收穫的話,請向我打賞點吧
如果轉載請標註出自@混元霹靂手ziksang