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的时间,一定要大于当前时间,我省去了做验证的一部分
我们在组件上监听倒计时时间,当倒计时时间结束的时候,触发一个事件,基于这个倒计时,大家可以充分的去想象一下别的更有趣倒计时的用法,和写法,和一些根据自己的业务逻辑去自定义一些倒计时的逻辑。
这期分享的比较简短,因为例子也不难,大家很容易消化,我所分享的也不是什么高深的东西,都是实际工作中需要用到的东西,谢谢
- Vue2.0进阶组件篇4 突如其来(时间倒计时组件)
- Vue2.0进阶组件篇4 突如其来(时间倒计时组件)
- Vue2.0进阶组件篇1 教你秒撸(短信倒计时组件)
- Vue2.0进阶组件篇1 教你秒撸(短信倒计时组件)
- Vue2.0进阶组件篇2 解析饿了么(spinner组件)
- Vue2.0 进阶组件篇 3 值得一看的(Toast 组件)
- Vue2.0 进阶组件篇 5 解析 vux(无逢 marquee 组件)
- Vue2.0进阶组件篇2 解析饿了么(spinner组件)
- Vue2.0 进阶组件篇 3 值得一看的(Toast 组件)
- Vue2.0 进阶组件篇 5 解析 vux(无逢 marquee 组件)
- vue2.0 组件
- vue2.0翻页组件
- VUE2.0组件库
- Vue2.0组件问题
- vue2.0 组件通信
- Vue2.0 组件通信
- Vue2 组件
- vue2.0 全局组件和局部组件
- Hexo NexT 主题下 blockquote 文本内容超出不自动换行解决方式
- 背包九讲
- 2017 蓝桥杯JavaB组省赛 日期问题
- LeetCode 111. Minimum Depth of Binary Tree
- Leetcode-549. Binary Tree Longest Consecutive Sequence II
- Vue2.0进阶组件篇4 突如其来(时间倒计时组件)
- 静态二维数组和动态二维数组(C语言)
- 170408 汇编-段内转移指令
- Unity3D游戏记录回放插件EZReplayManager(三)
- Windows 10中的PowerShell内置运行软件版本
- 谈谈我对云计算的认识之基本概念(二)
- LeetCode 226. Invert Binary Tree
- IntelliJ IDEA 14 注册码
- 总结了一些web前端常用的cdn