改写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 ...
随机推荐
- js中级小知识3
函数: 函数在调用的时候,会形成一个私有作用域,内部的变量不会被外面访问,这种保护机制叫闭包.这就意味着函数调用完毕,这个函数形成的栈内存会被销毁. 有些时候我们不希望他被销毁. 函数归属谁跟它在哪调 ...
- javascript的数组之filter()
filter()方法创建一个新数组,其包含通过回调函数测试的所有元素. const words = ['spray', 'limit', 'elite', 'exuberant', 'destruct ...
- Grunt Bower构建前端
Grunt + Bower—前端构建利器 目前比较流行的WEB开发的趋势是前后端分离.前端采用重量级的Javascript框架,比如Angular,Ember等,后端采用restful API的W ...
- ELK之使用filebeat收集系统数据及其他程序并生成可视化图表
当您要面对成百上千.甚至成千上万的服务器.虚拟机和容器生成的日志时,请告别 SSH 吧.Filebeat 将为您提供一种轻量型方法,用于转发和汇总日志与文件,让简单的事情不再繁杂. 1,安装fileb ...
- java_Arrays.sort()方法
这个方法位于util包里,可以传入任一类型数组,默认按照字典序升序排序 如果要按照降序排序,直接写一个循环来颠倒顺序就好了 源码如下 String[] name = {"1",&q ...
- ubuntu下安装thrift
configure: error: "Error: libcrypto required."
- Windows10 家庭版 关闭Windows defender
管理员权限打开cmd,输入下面命令: reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender&quo ...
- cestos7安装zookeeper
zookeeper安装包下载地址http://archive.apache.org/dist/zookeeper/ 一.单机 在/usr目录下 curl -L-O http://archive.apa ...
- 小程序图表wx-chart
下载地址 https://github.com/xiaolin3303/wx-charts 使用步骤: 一.解压后,把dist里面的wxcharts.js或者wxcharts-min.js放在小程序的 ...
- Java作业(一)
再此次的Java考试中发现自己的不足,无法套用HTML模板进行编程,说实话拿到的第一刻自己有些懵,不知道怎么去操作, 后来通过查询操作了一些,但是整个人还是懵懵的,不知道下一步怎么办,怎么去连接后台和 ...