Vue 倒计时组件封装
项目中需要用到倒计时的功能,封装了一个组件。
代码解读:
- 1:created周期中获取传入参数时间的剩余秒数: this.initSecondsLeft() 并绑定间隔事件 intervalEvent
- 2: 在computed属性中刷新当前剩余时间的结果
- 3: 结束后触发父组件的handle-done事件,父组件做出对应操作,如弹窗或信息提示
<template>
<div>
<div style="text-align:center;color:red;">
<h2>{{showTimeLeft}}</h2>
</div>
<div style="text-align:center;color:green;">
<h2>{{showTimeLeft}}</h2>
</div>
</div>
</template>
<script>
export default {
name: "timeCountDown",
props: {
endDate: String,
},
data() {
return {
timeLeft: 0,
bundleIntervalEvent: ""
};
},
computed: {
//用计算属性显示结果
showTimeLeft() {
//剩余秒数<=0
if (this.timeLeft <= 0) {
// 结束event
this.$emit('handle-done', true)
return "已过期";
}
// 剩余秒数>0
else {
let day = Math.floor(this.timeLeft / 86400);
let hour = Math.floor((this.timeLeft % 86400) / 3600);
let min = Math.floor(((this.timeLeft % 86400) % 3600) / 60);
let sec = Math.floor(((this.timeLeft % 86400) % 3600) % 60);
return (day + "天 " + (hour < 10 ? "0" : "") + hour + ": " + (min < 10 ? "0" : "") + min + ": " + (sec < 10 ? "0" : "") + sec
);
}
}
},
methods: {
//和当前日期比较,计算剩余多少秒
initSecondsLeft() {
let currentDate = new Date();
let tmp = this.endDate.split(/[- : /]/);
let toEndDate = new Date(tmp[0], tmp[1] - 1, tmp[2], tmp[3], tmp[4], tmp[5]);
//参数日期 > 当前日期 => 获取剩余秒数
if (toEndDate > currentDate) {
this.timeLeft = Math.floor((toEndDate.getTime() - currentDate.getTime()) / 1000);
} else {
this.timeLeft = 0;
}
},
//间隔事件: 剩余秒数--, 当剩余秒数为0时,清除间隔事件.
intervalEvent() {
if (this.timeLeft > 0) {
this.timeLeft--;
} else {
clearInterval(this.bundleIntervalEvent);
}
},
},
mounted() {
},
created() {
//初始化剩余秒数
this.initSecondsLeft();
//执行间隔事件.
this.bundleIntervalEvent = setInterval(this.intervalEvent, 1000);
},
beforeDestroy() {
clearInterval(this.bundleIntervalEvent);
}
};
</script>
Vue 倒计时组件封装的更多相关文章
- vue 倒计时组件
<template> <span> <i v-text="msg"></i> </span></template& ...
- Vue回炉重造之封装防刷新考试倒计时组件
<!-- 考试倒计时组件 --> <template> <div class="time"> <p>00:{{timerCount2 ...
- Vue.js 自定义组件封装实录——基于现有控件的二次封装(以计时器为例)
在本人着手开发一个考试系统的过程中,出现了如下一个需求:制作一个倒计时的控件显示在试卷页面上.本文所记录的就是这样的一个过程. 前期工作 对于这个需求,自然我想到的是有没有现成的组件可以直接使用(本着 ...
- Vue + Element UI 实现权限管理系统 (功能组件封装)
组件封装 为了避免组件代码的臃肿,这里对主要的功能部件进行封装,保证代码的模块化和简洁度. 组件结构 组件封装重构后,试图组件结构如下图所示 代码一览 Home组件被简化,包含导航.头部和主内容三个组 ...
- Vue + Element UI 实现权限管理系统 前端篇(七):功能组件封装
组件封装 为了避免组件代码的臃肿,这里对主要的功能部件进行封装,保证代码的模块化和简洁度. 组件结构 组件封装重构后,试图组件结构如下图所示 代码一览 Home组件被简化,包含导航.头部和主内容三个组 ...
- seventBus(封装) 一个巧妙的解决vue同级组件通讯的思路
如果在你项目中需要多处用到同级组件通讯,而又不想去写繁琐的vuex,可以参考这个小思路.本人在写项目中琢磨出来的,感觉挺好用,分享一下. 1.在utils文件夹下添加BusEvent.js 注释已经很 ...
- vue --》组件的封装 及 参数的传递
vue组件的定义 ● 组件(Component)是Vue.js最强大的功能之一 ● 组件可以扩展HTML元素,封装可重用代码 ● 在较高层面上,组件是自定义元素,Vue.js的编译器为他添加特殊功能 ...
- 循序渐进VUE+Element 前端应用开发(20)--- 使用组件封装简化界面代码
VUE+Element 前端应用,比较不错的一点就是界面组件化,我们可以根据重用的指导方针,把界面内容拆分为各个不同的组合,每一个模块可以是一个组件,也可以是多个组件的综合体,而且这一个过程非常方便. ...
- vue cli3.0 封装组件全局引入js文件并发布到npm
首先用 vue create创建一个项目 当前的项目目录是这样的: 首先需要创建一个 packages 目录,用来存放组件 然后将 src 目录改为 examples 用作示例 二.修改配置 启动项目 ...
随机推荐
- nginx: command not found
nginx 正常启动,可以访问服务器地址:welcome to nginx 使用nginx -t 等命令时 报错:nginx: command not found 这是环境变量未配置 配置环境变量 v ...
- Burp Suite Compare Module - 对比模块
虚拟目标网站: http://10.0.0.15/orangehrm/login.php (RangeHRM) - 可以通过OWASP虚拟机搭建此网站 模拟攻击步骤: 1. 通过设置浏览器代理 ...
- 数据结构 | 30行代码,手把手带你实现Trie树
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是算法和数据结构专题的第28篇文章,我们一起来聊聊一个经典的字符串处理数据结构--Trie. 在之前的4篇文章当中我们介绍了关于博弈论的 ...
- Python中ftplib模块的使用
ftplib模块的主要接口 # from ftplib import FTP #加载ftp模块 # ftp=FTP() #设置变量 # ftp.set_debuglevel(2) #打开调试级别2,显 ...
- 04 . Filebeat简介原理及配置文件和一些案例
简介 Beats轻量型数据采集器 Beats 平台集合了多种单一用途数据采集器.它们从成百上千或成千上万台机器和系统向 Logstash 或 Elasticsearch 发送数据. Beats系列 全 ...
- collection集合常用功能
java.util.Collection接口 是所有单列集合最顶层的接口,里面定义了所有单列集合的共性方法 1.public boolean add(E e) 添加元素 2.public bo ...
- [redis] -- 为什么那么快
1 完全基于内存 2 数据结构简单,对数据操作也简单 3 只有单线程,避免了不必要的上下文切换,也不存在竞态,不存在多进程或多线程导致的切换而消耗CPU,不用开了各种锁的问题 4 使用多路IO复用模型 ...
- cli框架 获取 命令行 参数
package main import ( "fmt" "log" "os" "github.com/urfave/cli&quo ...
- Arch Linux, 无法启动进入sddm登录
启动Arch Linux 的时候全屏就一个错误"Failed to start Load/Save Screen Backlight Brightness of backlight:acpi ...
- 什么是 PHP 过滤器?
PHP 过滤器 PHP 过滤器用于验证和过滤来自非安全来源的数据,比如用户的输入. 什么是 PHP 过滤器? PHP 过滤器用于验证和过滤来自非安全来源的数据. 测试.验证和过滤用户输入或自定义数据是 ...