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 选择和过滤方法代码总结
Nov 19 Javascript
理解JavaScript中的对象 推荐
Jan 09 Javascript
返回对象在当前级别中是第几个元素的实现代码
Jan 20 Javascript
使用jQuery将多条数据插入模态框的实现代码
Oct 08 Javascript
设计模式中的facade外观模式在JavaScript开发中的运用
May 18 Javascript
JavaScript中的this引用(推荐)
Aug 05 Javascript
微信小程序 progress组件详解及实例代码
Oct 25 Javascript
结合Vue控制字符和字节的显示个数的示例
May 17 Javascript
解决使用bootstrap的dropdown部件时报错:error:Bootstrap dropdown require Popper.js问题
Aug 30 Javascript
vue-cli项目中使用echarts图表实例
Oct 22 Javascript
JavaScript中的一些实用小技巧总结
Apr 07 Javascript
vue实现购物车案例
May 30 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
PHP5.0正式发布 不完全兼容PHP4 新增多项功能
2006/10/09 PHP
社区(php&amp;&amp;mysql)六
2006/10/09 PHP
自己写的php中文截取函数mb_strlen和mb_substr
2015/02/09 PHP
PHP封装mysqli基于面向对象的mysql数据库操作类与用法示例
2019/02/25 PHP
基于jquery的web页面日期格式化插件
2011/11/15 Javascript
js bind 函数 使用闭包保存执行上下文
2011/12/26 Javascript
根据身份证号自动输出相关信息(籍贯,出身日期,性别)
2013/11/15 Javascript
javascritp添加url参数将参数加入到url中
2014/09/25 Javascript
javascript中bind函数的作用实例介绍
2014/09/28 Javascript
jquery表单对象属性过滤选择器实例分析
2015/05/18 Javascript
瀑布流的实现方式(原生js+jquery+css3)
2020/06/28 Javascript
ionic由于使用了header和subheader导致被遮挡的问题的两种解决方法
2016/09/22 Javascript
深入理解Javascript中的作用域链和闭包
2017/04/25 Javascript
详解vuex中mapState,mapGetters,mapMutations,mapActions的作用
2018/04/13 Javascript
Vue.js 中的 v-show 指令及用法详解
2018/11/19 Javascript
写gulp遇到的ES6问题详解
2018/12/03 Javascript
详解如何在vue项目中使用layui框架及采坑
2019/05/05 Javascript
JS中getElementsByClassName与classList兼容性问题解决方案分析
2019/08/07 Javascript
如何在vue项目中嵌入jsp页面的方法(2种)
2020/02/06 Javascript
vue实现页面切换滑动效果
2020/06/29 Javascript
js实现Element中input组件的部分功能并封装成组件(实例代码)
2021/03/02 Javascript
python3.4实现邮件发送功能
2018/05/28 Python
Python使用Beautiful Soup爬取豆瓣音乐排行榜过程解析
2019/08/15 Python
pytorch中tensor张量数据类型的转化方式
2019/12/31 Python
Python configparser模块应用过程解析
2020/08/14 Python
纽约服装和生活方式品牌:Saturdays NYC
2017/08/13 全球购物
理肤泉加拿大官网:La Roche-Posay加拿大
2018/07/06 全球购物
SIDESTEP荷兰:在线购买鞋子
2019/11/18 全球购物
计算机求职信
2013/12/01 职场文书
物业管理毕业生的自我评价
2014/02/17 职场文书
网络编辑岗位职责
2014/03/18 职场文书
中介业务员岗位职责
2014/04/09 职场文书
绿色家庭事迹材料
2014/05/01 职场文书
一次性工伤赔偿协议书范本
2014/11/25 职场文书
乡镇团委工作总结2015
2015/05/26 职场文书
基于PyQt5制作一个群发邮件工具
2022/04/08 Python