vue 日历插件

作者: 橙汁坤 | 来源:发表于2018-12-03 11:38 被阅读0次

    本人是一个刚刚入职小码农,用于记录自己学习的过程,写的不好请见谅。

    为什么要改写日历插件?

    写多了vue项目看到原生的js、jq插件就一阵头疼

    大多数网上的js日历插件都长这样

    test1

    这样

    test2

    还有这样

    test3

    网上没有合适的插件就只好自己造

    参考了githup的相关代码之后梳理了一下需要做的几个步骤

    1. 初始化日历默认值,在原来的代码中加入需要的方法
      //初始化年月日插件默认值
                function dateCtrlInit() {
                    var date = new Date();
                    var dateArr = {
                        yy: date.getYear(),
                        mm: date.getMonth(),
                        dd: date.getDate() - 1,
                        hh: 0,
                    };
                    var date_hh = _self.gearDate.querySelector(".date_hh");
                    if (date_hh && date_hh.getAttribute("val")) {
                        //得到日期的值
                        var hhVal = parseInt(date_hh.getAttribute("val"));
                        var hhHtml = [
                            // 时辰value
                            {subName:'时辰未知',value:0},
                            {subName:'23:00-00:59(子)',value:0},
                            {subName:'01:00-02:59(丑)',value:1},
                            {subName:'03:00-04:59(寅)',value:2},
                            {subName:'05:00-06:59(卯)',value:3},
                            {subName:'07:00-08:59(辰)',value:4},
                            {subName:'09:00-10:59(巳)',value:5},
                            {subName:'11:00-12:59(午)',value:6},
                            {subName:'13:00-14:59(未)',value:7},
                            {subName:'15:00-16:59(申)',value:8},
                            {subName:'17:00-18:59(酉)',value:9},
                            {subName:'19:00-20:59(戌)',value:10},
                            {subName:'21:00-22:59(亥)',value:11},
                        ]
                        itemStr = "";
                        for(var p = 0,len = hhHtml.length; p < len; p++){
                            itemStr += "<div class='tooth_hh' data-value="+hhHtml[p].value+">" + hhHtml[p].subName + "</div>";
                        }
    
                        date_hh.innerHTML = itemStr;
                         // 中文转换,type:rm闰月,mm月份,dd日期,num值
                    function getChinese(type,num){
                    var rmArr=['闰正月','闰二月','闰三月','闰四月','闰五月','闰六月','闰七月','闰八月','闰九月','闰十月','闰冬月','闰腊月'];
                    var mmArr=['正月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月'];
                    var ddArr=['初一','初二','初三','初四','初五','初六','初七','初八','初九','初十','十一','十二','十三','十四','十五','十六','十七','十八','十九','二十','廿一','廿二','廿三','廿四','廿五','廿六','廿七','廿八','廿九','三十','三十一'];
    
                    if(type=='rm') return rmArr[num-1]
                    if(type=='mm') return mmArr[num-1];
                    if(type=='dd') return ddArr[num-1];
                }
    

    中间省略了很多代码 都是网上搬运没什么借鉴意义最后记得 export default lCalendar 将这个模块暴露可以让外部引用,第一编写时就应为忘记暴露而出错

    1. 在vue项目中入口js引入jq
        import Vue from 'vue'
        import App from './App'
        import router from './router'
        Vue.config.productionTip = false
        import $ from 'jquery'
        /* eslint-disable no-new */
        new Vue({
          el: '#app',
          router,
          components: { App },
          template: '<App/>'
        })
    

    在webpack.base.conf.js里加入

        var webpack = require("webpack")
    

    在module.exports的最后加入

      // 增加一个plugins
      plugins: [
        new webpack.ProvidePlugin({
            $: "jquery",
            jQuery: "jquery"
        })
     ],
    
    1. 在vue项目中初始化插件

      html代码

      <div class="calendar">
        <div class="hello">{{msg}}</div>
          <section class="section-datetime">
              <div id="datetime" data-id="birthday">选择日期</div>
              <input type="hidden" id="birthday" name="birthday"  value="" ref="birthday" >
          </section>
        <button @click="test">测试</button>
      </div>
    
    import lCalendar from '../libs/js/lCalendar.js'
    export default {
      name: 'HelloWorld',
      data () {
        return {
          msg: 'Welcome to js-lunar-calendar'
        }
      },
      //页面挂载时初始化日期插件
      mounted(){
        var calendar1 = new lCalendar().init('#datetime');
        new lCalendar().init('#dete');
      },
    

    看一下效果··

    移动端浏览
    js-lunar-calendar2.png
    pc端浏览
    js-lunar-calendar1.png

    结语

    第一次发文也不知道写什么好,附上项目地址如果碰巧对大家能够有帮助那真的是太好啦,希望大家多给我一些鼓励。

    js农历插件demo

    相关文章

      网友评论

        本文标题:vue 日历插件

        本文链接:https://www.haomeiwen.com/subject/nmxycqtx.html