Vue2.0进阶组件篇4 突如其来(时间倒计时组件)

来源:互联网 发布:windows 高精度sleep 编辑:程序博客网 时间:2024/04/26 04:02

接下来的时候我想关注于node.js等一系前端知识,但是这个时间倒计时组件真的很突如其来,就在昨天,因为公司需求,要做一个倒计时,ok那没有问题,对于倒计时来说,一点都不难,肯定大家都写过,但是基于vue又是怎么样的原理,又如何去书写,那就来把。不费话不,不BB,直接上代码https://juejin.im/post/58e87c1bac502e006c35567e

接下来还是按着我们约定的来

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的时间,一定要大于当前时间,我省去了做验证的一部分

我们在组件上监听倒计时时间,当倒计时时间结束的时候,触发一个事件,基于这个倒计时,大家可以充分的去想象一下别的更有趣倒计时的用法,和写法,和一些根据自己的业务逻辑去自定义一些倒计时的逻辑。

这期分享的比较简短,因为例子也不难,大家很容易消化,我所分享的也不是什么高深的东西,都是实际工作中需要用到的东西,谢谢

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 无塔供水井水水位低了怎么办 应急部成立林场的专业灭火队怎么办 路由器我恢复出厂设置断网了怎么办 多囊卵巢综合症不来月经怎么办 天刀普通血战苍梧城没有太白怎么办 天涯明月刀把沈妄言打入水中怎么办 天涯明月刀刷本队友技能太花怎么办 手机收所有短信时显示被隐藏怎么办 div放图片多出的空白怎么办 我14岁射精让我记忆力差了怎么办 qq闪退聊天记录全没了怎么办 木瓜奇迹忘记升级过头转职了怎么办 孩子进入青春期什么坏事都干怎么办 母狗狗第一次来月经应该怎么办图 社保断了想补缴怎么办?这些要知道 换工作社保断了一个月怎么办 北京社保中间断了几个月怎么办 农保和社保都交了医保怎么办 如果交了社保结婚生孩子断了怎么办 南京社保中间断了几个月怎么办 mu大师等级技能点加点太慢怎么办 永恒纪元戒不是本职业套装石怎么办 全民奇迹忘记在哪个区了怎么办 全民奇迹安卓的忘记那个区了怎么办 大天使之剑h5所在服人少怎么办 买的裙子因为好看没有勇气穿怎么办 魅蓝s6锁屏密码忘了怎么办 u盘被占用不能安全弹出怎么办 洛克王国得到了魔攻巨蟹座怎么办 在育碧下载游戏下一半不下了怎么办 轩辕传奇单机版忘记哪个区了怎么办 登腾讯游戏动态密码啥意思怎么办 说了不该说的话别人不原谅怎么办 轩辕传奇手游金币用错了怎么办 神秘时代4法杖按键冲突怎么办 孕2个月发烧38度怎么办 不知道怀孕喝了止咳糖浆怎么办? 小孩刮头发的备皮刀割住手怎么办? 天梭手表里面的刻度掉了怎么办 国战天下手游帐号丢失怎么办 肺力咳合剂一次喝了50多了怎么办