改写element-ui中的日期组件
如果你想实现一个自定义的日期组件规则如下:日期组件未点开前左右两边有前一天后一天控制箭头,且前一天后一天有数据时才显示箭头,没有数据时,快速切换箭头隐藏。当日期组件点开后,有数据的天为可点击状态,无数据的为不可点击状态。
那么,我们可以在已有的element-ui日期组件的基础上去实现这个功能。
如下是element-ui中给的例子,表示日历中时间大于当前时间的天数均为不可点击状态。即return true时为不可点击状态。
<el-date-picker
v-model="value2"
align="right"
type="date"
placeholder="选择日期"
:picker-options="pickerOptions1">
</el-date-picker> export default {
data() {
return {
pickerOptions1: {
disabledDate(time) {
return time.getTime() > Date.now();
}
}
}
}
}
可做如下修改:
<div class="date">
<span class="el-icon-arrow-left arrow
" @click="forward" v-show="forwardShow"></span>
<el-date-picker
v-model="timevalue"
value-format="yyyy-MM-dd"
format="yyyy-MM-dd"
type="date"
:picker-options="pickerOptions1"
@change="timeChange">
</el-date-picker>
<span class="el-icon-arrow-right arrow" @click="back" v-if="backShow">
</span>
</div>
data() {
//注意此处得用let that = this;然后再通过that.dataArr来访问存后台返回的数据的日期数组,因为如果通过this是访问不到这个数组变量的。
let that = this;
return {
forwardShow: true,
backShow: true,
dataArr: [],
pickerOptions1: {
disabledDate(time) {
var y = time.getFullYear();
var mo = time.getMonth();
var da = time.getDate();
var newTime = y + '-' + (mo + 1) + '-' + da;
var flag = true;
that.dataArr.forEach(function (element) {
if (element === newTime) {
flag = false;
}
});
return flag;
}
},
replaceShow: false,
timevalue: ''
};
}, // 获取当前时间
getCurrTime() {
var now = new Date();
this.timevalue = now;
},
// 日期选择时触发的change事件
timeChange() {
// var y = this.timevalue.getFullYear();
// var mo = this.timevalue.getMonth();
// var da = this.timevalue.getDate();
// var newTime = y+"-"+(mo+1)+"-"+da;
var timestamp = this.timevalue.getTime() - 86400000;
this.isForward(timestamp);
var tamp = this.timevalue.getTime() + 86400000;
this.isBack(tamp);
},
// 点击前一天日期箭头触发的事件
forward() {
var timestamp = this.timevalue.getTime() - 86400000;
var forwardTime = new Date(timestamp);
this.timevalue = forwardTime;
var tamp = timestamp - 86400000;
this.isForward(tamp);
},
// 点击后一天日期箭头触发的事件
back() {
var timestamp = this.timevalue.getTime() + 86400000;
var backTime = new Date(timestamp);
this.timevalue = backTime;
var tamp = timestamp + 86400000;
this.isBack(tamp);
},
// 判断前一天切换按钮是否隐藏
isForward(timestamp) {
var forwardTime = new Date(timestamp);
var y = forwardTime.getFullYear();
var mo = forwardTime.getMonth();
var da = forwardTime.getDate();
var newForward = y + '-' + (mo + 1) + '-' + da;
var flag = true;
this.dataArr.forEach(function (element) {
if (element === newForward) {
flag = false;
}
});
if (flag) {
this.forwardShow = false;
}
else {
this.forwardShow = true;
}
},
// 判断后一天切换按钮是否隐藏
isBack(tamp) {
var backTime = new Date(tamp);
var by = backTime.getFullYear();
var bmo = backTime.getMonth();
var bda = backTime.getDate();
var newBack = by + '-' + (bmo + 1) + '-' + bda;
var flag = true;
this.dataArr.forEach(function (element) {
if (element === newBack) {
flag = false;
}
});
if (flag) {
this.backShow = false;
}
else {
this.backShow = true;
}
},
最后,我们就可以实现需求中的效果了。
改写element-ui中的日期组件的更多相关文章
- Element ui 中使用table组件实现分页记忆选中
我们再用vue和element-ui,或者其他的表格的时候,可能需要能记忆翻页勾选,那么实现以下几个方法就ok了 示例如下 <el-table :data="tableData&quo ...
- 关于Element UI中页面样式小问题
一,修改组件dialog窗口的大小 二,在我使用upload组件上传一张美女图片时,发现当预览图片时,图片是灰色的,点击一下才会变亮,这种效果使我很不舒服,于是我通过添加下面的一条样式,问题解决了(可 ...
- 关于Element UI中select组件中遇到的问题
问题一:在使用select组件设置多选功能后,窗口抖动问题? 详细描述:在我使用select做多选的功能时出现了窗口抖动的问题,测试的时候发现,在有些人的电脑上抖动,有些人的电脑上不抖,找了很多文档, ...
- Element UI 中组件this.$message报错
最近在做毕设的时候,用Element UI中的消息提示message一直报以下的错误: 展示的效果也不好看,没有图标什么的: 但我明明有在main.js引入了element-ui 呀,因为毕设时间很赶 ...
- vue+element ui中select组件选择失效问题原因与解决方法
codejing 2020-07-10 09:13:31 652 收藏 分类专栏: Web Vue Element UI 版权 .当表单form赋完值后,如果后续又对form中某一属性值进行操作如 ...
- element ui 中的 resetFields() 报错'resetFields' of undefined
每次做各种form表单时,首先要注意的是初始化,但是刚开始若没有仔细看文档,则会自己写个方法将数据设置为空,但是这样就会出现一个问题,表单内存在各种验证,假如是一个弹框内有form表单,弹框出现就执行 ...
- element ui中的一些小技巧
最近写公司的项目,这项目是vue和element ui搭建的, 做的是一套电力系统的管理平台. 遇到一个小麻烦,用过element ui 的都知道,使用element ui 弹框,点击空白处,默认是 ...
- Element ui 上传文件组件(单文件上传) 点击提交 没反应
element ui 第一次上传文件后 上传其他文件再次点击不再次提交 需要使用 clearFiles 清空已上传文件列表 这时候在次点击 上传按钮 就会惊喜的发现 可以上传了使用方法 this.$r ...
- 在基于ABP框架的前端项目Vue&Element项目中采用日期格式处理,对比Moment.js和day.js的处理
Day.js 是一个轻量的处理时间和日期的 JavaScript 库,和 Moment.js 的 API 设计保持完全一样. 如果您曾经用过 Moment.js, 那么您已经知道如何使用 Day.js ...
随机推荐
- Python学习之旅(三十五)
Python基础知识(34):电子邮件(Ⅰ) 几乎所有的编程语言都支持发送和接收电子邮件 在使用Python收发邮件前,请先准备好至少两个电子邮件,如xxx@163.com,xxx@sina.com, ...
- UML关系实现、泛化,依赖、组合
图片via<大话设计模式> UML一目了然
- 中国标准时间转换成YYY-MM-DD
export function changeDate(dateA) { let date; if (dateA) { if (dateA.toString().indexOf('GMT') > ...
- [bash][awk] bash下使用awk方便的列求和
这么多年,始终在用awk进行文本处理.但是一直没有好好的学习awk的语法.所以很多情况都是知其然,不知其所以然. 如今,亦如此.先记下来如下,以后有时间系统的学习一下awk的语法. ┬─[tong@T ...
- :after和:before 伪类
1 使用伪类画三角形 .div{ margin-top: 100px; margin-left: 100px; } .div:after{ content: ''; display:inline-bl ...
- 【Python全栈-后端开发】Django入门基础-2
Django入门基础知识-2 一 .模版 一.模版的组成 HTML代码+逻辑控制代码 二.逻辑控制代码的组成 1 变量(使用双大括号来引用变量) {{var_name}} 2 标签(tag)的使用 ...
- Spring框架源码阅读之Springs-beans(一)容器的基本实现概述(待续)
去年通过实际框架代码的阅读,以及结合<Spring源码深度解析>和<Spring技术内幕>的阅读,对Spring框架内Bean模块有了一个整体性的认识.对此进行的总结性整理和回 ...
- scrapy学习---管道
使用管道必须实现process_item() 方法 process_item(self, item, spider) 次方法实现数据的过滤处理等操作 open_spider(self, spider) ...
- Python静态方法(staticmethod)和类方法(classmthod)
Python静态方法(staticmethod)和类方法(classmthod)翻了翻之前的笔记,也刚好看到一篇不错的blog,关于静态方法和类方法的,方便以后查阅,就写在这里了,废话不多说,直接上代 ...
- java框架之SpringBoot(2)-配置
规范 SpringBoot 使用一个全局的配置文件,配置文件名固定为 application.properties 或 application.yml .比如我们要配置程序启动使用的端口号,如下: s ...