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 相关文章推荐
用JQuery 判断某个属性是否存在hasAttr的解决方法
Apr 26 Javascript
js 加密压缩出现bug解决方案
Nov 25 Javascript
Javascript简单改变表单元素背景的方法
Jul 15 Javascript
js实现异步循环实现代码
Feb 16 Javascript
JS中setTimeout的巧妙用法前端函数节流
Mar 24 Javascript
jquery 点击元素后,滚动条滚动至该元素位置的方法
Aug 05 Javascript
angularJS 如何读写缓冲的方法(推荐)
Aug 06 Javascript
ES6新特性之Object的变化分析
Mar 31 Javascript
基于JavaScript定位当前的地理位置
Apr 11 Javascript
vue刷新页面时去闪烁提升用户体验效果的实现方法
Dec 10 Javascript
vue2.0自定义指令示例代码详解
Apr 25 Javascript
通过vue写一个瀑布流插件代码实例
Sep 07 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
杏林同学录(四)
2006/10/09 PHP
PHP Squid中可缓存的动态网页设计
2008/09/17 PHP
PHP及Zend Engine的线程安全模型分析
2011/11/10 PHP
php获取字段名示例分享
2014/03/03 PHP
WordPress中限制非管理员用户在文章后只能评论一次
2015/12/31 PHP
详解yii2使用多个数据库的案例
2017/06/16 PHP
Laravel中encrypt和decrypt的实现方法
2017/09/24 PHP
js实现iframe动态调整高度的代码
2008/01/06 Javascript
Javascript 去除数组的重复元素
2010/05/04 Javascript
用Mootools获得操作索引的两种方法分享
2011/12/12 Javascript
js 回车提交表单两种实现方法
2012/12/31 Javascript
Node.js返回JSONP详解
2016/05/18 Javascript
jQuery+CSS3实现点赞功能
2017/03/13 Javascript
详解Vue.js 2.0 如何使用axios
2017/04/21 Javascript
easyui简介_动力节点Java学院整理
2017/07/14 Javascript
vue.js中实现登录控制的方法示例
2018/04/23 Javascript
webpack中如何使用雪碧图的示例代码
2018/11/11 Javascript
RxJS的入门指引和初步应用
2019/06/15 Javascript
原生js+canvas实现下雪效果
2020/08/02 Javascript
详解微信小程序轨迹回放实现及遇到的坑
2021/02/02 Javascript
[01:41]DOTA2超级联赛专访YYF 称一辈子难忘TI2
2013/05/28 DOTA
python中精确输出JSON浮点数的方法
2014/04/18 Python
Python实现遍历windows所有窗口并输出窗口标题的方法
2015/03/13 Python
python实现输出一个序列的所有子序列示例
2019/11/18 Python
python基于TCP实现的文件下载器功能案例
2019/12/10 Python
Python 过滤错误log并导出的实例
2019/12/26 Python
Python hashlib常见摘要算法详解
2020/01/13 Python
html5中嵌入视频自动播放的问题解决
2020/05/25 HTML / CSS
String这个类型的class为何定义成final?
2012/11/13 面试题
优秀毕业生自我鉴定
2014/01/19 职场文书
大学运动会通讯稿
2014/01/28 职场文书
学校感恩教育活动总结
2014/07/07 职场文书
新郎婚礼答谢词
2015/01/04 职场文书
公司捐书倡议书
2015/04/27 职场文书
英文辞职信范文
2015/05/13 职场文书
银行文明优质服务培训心得体会
2016/01/09 职场文书