vue使用laydate时间插件的方法


Posted in Javascript onNovember 14, 2018

之前在做vue项目时使用iviewUI库中的DatePicker组件,发现DatePicker使用起来比较麻烦,尤其是对时间精确度上的限制不尽人意,操作起来也比较繁琐,总之在处理一系列时间组件相互联动上存在一大堆问题,比如

vue使用laydate时间插件的方法

DatePicker时间组件

时间精确到分,组件1的value等于组件2的最小值,组件2的vlaue等于组件3的最小值,。。。依次类推,如果是时间精确到日,这个组件没有任何问题,如果是精确到时分秒,这个组件的对时分秒的控制就不是那个灵敏了,在点击时分秒之后才能识别出对时分秒的限制,而这种用户体验不够友好。

所以,想到了以前用过的laydate时间插件

在vue中使用laydate

在vue组件中npm install laydate,然后在vue组件中直接引入:

import laydate from 'laydate'

然后在mounted中调用:

laydate.now();

发现chrome浏览器控制台中报错,laydate is not defined,然后把laydate.js放在静态资源里面引入:

import laydate from '../../static/js/laydate.js'

发现chrome浏览器控制台中依然是报错,laydate is not defined,然后在html入口文件中引入:

<script src="./src/static/js/laydate.js"></script>

发现chrome浏览器控制台中不报,laydate is not defined,但是又报另外一个错误:require is not defined,查看原码发现是因为laydate.js中在引用css样式表时未定义:require('./need/laydate.css');require('./skins/default/laydate.css'); 

最后使用laydate打包构建后的文件:dist/laydate/laydate.min.js,把laydate.min.js和css粘贴到src/static/路径下,注意js和css结构不要改变

<script src="./src/static/laydate/laydate.min.js"></script>

然后在chrome浏览器中成功打印出了laydate.now()的值:2018-10-21

然后使用import方式引入laydate.min.js:

import laydate from '../../static/laydate/laydate.min.js'

chrome控制台里有报错:laydate.now is not a function

原因时laydate.min.js是直接把laydate对象注册到了window上,本身并没有export default laydate出口,所以不能使用这种方式引用,应该使用:

import '../../static/laydate.min.js'

这样引用后,chrome中成功打印laydate.now(); 2018-10-21

或者在入口文件index.html中使用cdn加速方式引入laydate.min.js也是可以的:

<script src="https://cdn.jsdelivr.net/npm/laydate@1.0.7/dist/laydate.min.js"></script>

当然,如果项目中只是个别地方是使用到时间插件,建议采用import方式引入

laydate.min.js时间插件在vue组件中的使用方式

<template>
  <div id="laydateIndex">
    <div class="input-item">
      <label for="">请选择时间:</label>
      <input type='text' 
          name='houseChangeTime' 
          placeholder='请选择日期' 
          class='form-control' 
          onclick="laydate({ istime: true, format: 'YYYY/MM/DD hh:mm:ss' })" />
    </div>
    <div class="input-item">
      <label for="">开始时间:</label>
      <input type="text" name="" id="begintime" placeholder='请选择日期'>
    </div>
    <div class="input-item">
      <label for="">结束时间:</label>
      <input type="text" name="" id="endtime" placeholder='请选择日期'>
    </div>
  </div>
</template>
<script>
  import '../../assets/js/laydate.min.js'
  export default {
    name: 'laydateIndex',
    data () {
      return {
        begintime: '',
        endtime: '',
        start_time: '',
      }
    },
    methods: {
      setBeginTime () {
        var _this = this;
        var mintime = laydate.now(0, 'YYYY-MM-DD hh:mm:ss');
        _this.$data.begintime = mintime;
        _this.$data.endtime = mintime;
        var begintiem_options = {
          elem: '#begintime',
          format: 'YYYY-MM-DD hh:mm:ss', // 分隔符可以任意定义
          event: 'click', //触发事件
          istime: true, //是否开启时间选择
          isclear: true, //是否显示清空
          issure: true, //是否显示确认
          festival: true, //是否显示节日
          min: mintime, //最小日期
          max: '2099-12-31 23:59:59', //最大日期
          start: mintime, //开始日期
          fixed: true, //是否固定在可视区域
          zIndex: 99999999, //css z-index
          choose: function(dates) { // 选择日期完毕的回调
            endtime_options.start = dates;
            endtime_options.min = dates;
            _this.$data.begintime = dates;
            _this.$data.endtime = dates;
          }
        };
 
        var endtime_options = {
          elem: '#endtime',
          format: 'YYYY-MM-DD hh:mm:ss', // 分隔符可以任意定义
          event: 'click', //触发事件
          istime: true, //是否开启时间选择
          isclear: true, //是否显示清空
          issure: true, //是否显示确认
          festival: true, //是否显示节日
          min: _this.$data.begintime, //最小日期
          max: '2099-12-31 23:59:59', //最大日期
          start: _this.$data.begintime, //开始日期
          fixed: true, //是否固定在可视区域
          zIndex: 99999999, //css z-index
          choose: function(dates) { // 选择日期完毕的回调
            // this.begintiem_options = dates;
          }
        };
 
        laydate(begintiem_options);
        laydate(endtime_options);
        
      },
      initPage () {
        var _this = this;
        _this.setBeginTime();
      },
    },
    mounted () {
      this.initPage();
    },
  }
</script>

 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS获取url链接字符串 location.href
Dec 23 Javascript
javascript常用的正则表达式实例
May 15 Javascript
跟我学习javascript的函数调用和构造函数调用
Nov 16 Javascript
jQuery实现的多滑动门,多选项卡效果代码
Mar 28 Javascript
vue.js表格组件开发的实例详解
Oct 12 Javascript
在html中引入外部js文件,并调用带参函数的方法
Oct 31 Javascript
微信小程序 数据交互与渲染实例详解
Jan 21 Javascript
vue2.0 循环遍历加载不同图片的方法
Mar 06 Javascript
Angularjs之如何在跨域请求中传输Cookie的方法
Jun 01 Javascript
详解vue2.0+axios+mock+axios-mock+adapter实现登陆
Jul 19 Javascript
Vue中遍历数组的新方法实例详解
Jul 21 Javascript
js实现二级联动简单实例
Jan 11 Javascript
js使用Promise实现简单的Ajax缓存
Nov 14 #Javascript
微信jssdk逻辑在vue中的运用详解
Nov 14 #Javascript
Puppeteer 爬取动态生成的网页实战
Nov 14 #Javascript
React和Vue中监听变量变化的方法
Nov 14 #Javascript
详解jQuery获取特殊属性的值以及设置内容
Nov 14 #jQuery
浅谈vue中关于checkbox数据绑定v-model指令的个人理解
Nov 14 #Javascript
js html实现计算器功能
Nov 13 #Javascript
You might like
全国FM电台频率大全 - 29 青海省
2020/03/11 无线电
ecshop 批量上传(加入自定义属性)
2012/03/20 PHP
php中http_build_query 的一个问题
2012/03/25 PHP
joomla jce editor 解决上传中文名文件失败问题
2013/06/09 PHP
刷新PHP缓冲区为你的站点加速
2015/10/10 PHP
Yii框架getter与setter方法功能与用法分析
2019/10/22 PHP
JavaScript脚本性能的优化方法
2007/02/02 Javascript
20个最新的jQuery插件
2012/01/13 Javascript
jquery自定义属性(类型/属性值)
2013/05/21 Javascript
JavaScript中实现继承的三种方式和实例
2015/01/29 Javascript
Jquery日历插件制作简单日历
2015/10/28 Javascript
vue脚手架vue-cli的学习使用教程
2017/06/06 Javascript
浅谈angular2 组件的生命周期钩子
2017/08/12 Javascript
Angular4的输入属性与输出属性实例详解
2017/11/29 Javascript
Angular实现的简单定时器功能示例
2017/12/28 Javascript
jQuery实现王者荣耀手风琴效果
2020/01/17 jQuery
[05:48]DOTA2英雄梦之声vol21 屠夫
2014/06/20 DOTA
下载糗事百科的内容_python版
2008/12/07 Python
Python基础教程之tcp socket编程详解及简单实例
2017/02/23 Python
python 迭代器和iter()函数详解及实例
2017/03/21 Python
Django实现的自定义访问日志模块示例
2017/06/23 Python
Python OpenCV 使用滑动条来调整函数参数的方法
2019/07/08 Python
解析python的局部变量和全局变量
2019/08/15 Python
Python unittest框架操作实例解析
2020/04/13 Python
CSS3的transition和animation的用法实例介绍
2014/08/20 HTML / CSS
西安众合通用.net笔试题
2013/03/18 面试题
学校食堂标语
2014/10/06 职场文书
遗嘱继承权公证书
2015/01/26 职场文书
经理岗位职责范本
2015/04/15 职场文书
学校清洁工岗位职责
2015/04/15 职场文书
幼儿园开学报名通知
2015/07/16 职场文书
2015年高三年级组工作总结
2015/07/21 职场文书
学校扫黄打非工作总结
2015/10/15 职场文书
2016年“世界气象日”广播稿
2015/12/17 职场文书
2019年学校消防安全责任书(2篇)
2019/10/09 职场文书
Apache Hudi数据布局黑科技降低一半查询时间
2022/03/31 Servers