美文网首页虾写前端Vue.jsVUE
VUE也有自己的日历组件

VUE也有自己的日历组件

作者: 桑尼君 | 来源:发表于2016-07-08 08:59 被阅读23117次

    Github地址
    哈哈, 就在昨天笔者刚刚在Github 上发布了一个基于VUE的日历组件。过去做日历都是需要引用 jquery moment 引用 fullCalendar.js 的。几者加起来体积庞大不说,也并不是很好使用在vue这种数据驱动的项目里。所以笔者经过一周的拍脑袋,做了一个十分简陋的版本。

    日历组件的demo

    简介

    目前只支持月视图,该组件是 .vue 文件的形式。所以,大家在使用的时候 是需要node的咯~~~

    安装

    npm install vue-fullcalendar
    

    当然如果对于大陆用户 cnpm 也是十分推崇的,下载速度会快很多,一下 所有使用到npm命令地方 都可以用cnpm代替 笔者不再重复

    DEMO

    你可以直接访问简单的在线 demo

    针对这个组件, 本人做了一个十分简单的 demo。进入到该项目后

    npm install
    npm run dev
    

    然后打开浏览器 输入 localhost:8080 你应该就能看到demo啦

    使用

    大致了解后肯定是使用的问题啦,你只需要把这个组件引入到你自己的vue项目中就可以自由使用啦,因为现在是比较初步的版本。所以笔者十分鼓励大家针对自己的需求做二次开发,

    import fullcalendar from 'vue-fullcalendar'
    

    API

    既然是组件,笔者自然预先定义了一些小属性。不过不用担心,都是基于VUE的

    props
    1. events 是该组件唯一接受的参数 用来表示该日历上的所有日程事件,他的格式应该如下
    events = [
              {
                title :  'event1',
                start: '2016-07-01',
                YOUR_DATA : {}
              },
              {
                title : 'event2',
                start : '2016-07-02',
                end : '2016-07-03',
                YOUR_DATA : {}
              }
          ]       
    

    title 自然就是事件的标题啦 会直接显示在日历上

    start 事件的开始日期 必填哦

    end 事件的结束日期 没填就默认是开始日期

    YOUR_DATA 你自己定义的一些数据 变量名随意 在后续都会被vue的广播事件传递

    events

    这里的events 可不是上面说的 props 里的events 哦 而是 你在使用日历 时 一些行为的 反馈。 比如你点击 某一天 某个时间 日历组件都会向外部 dispatch 一个对应的事件和相应的参数

    1. 'changeMonth' 事件, 当你切换月份时触发
    this.$dispatch('changeMonth', start, end)
    

    start 是这个月视图(并不是这个月)的第一天 yyyy-MM-dd
    end 是这个月视图(并不是这个月)的最后一天 yyyy-MM-dd

    1. 'eventClick' : 当你点击某个日历事件时触发
    this.$dispatch('eventClick', event, jsEvent, pos)
    

    event 就是这个日历事件对象啦 参考 上面的props

    jsEvent 这次点击的原生 javascript 事件

    pos 这个事件的相对于日历的相对坐标 在slot中使用

    1. 'dayClick' : 当你点击某一天触发
     this.$dispatch('eventClick', day, jsEvent)
    

    day 你点击的这一天的 Date 对象
    jsEvent 这次点击的原生 javascript 事件

    slots

    为了方便开发者的自由定制我在组件中加了很多slots 来填写大家自己需要的东西 比如 事件卡片 筛选器,下图是一张我自己项目的 事件卡片 和筛选。当然我并没有把他们放进组件里。 I find my roof, you find yours.

    事件卡片和筛选

    结尾

    因为这个组件还是比较初级的阶段,可能有不少问题,所以十分鼓励大家提issue或是下载后根据自己的需求二次开发。当然如果你心疼笔者的一点点努力的也请给我的项目 一个 Star 哦~~
    再贴一次地址
    Github地址

    相关文章

      网友评论

      • 8006a9490470:你好 我想问一下怎么设置成以月为基础显示而不是以天为基础显示 就是我点开日历下面显示的是一到十二月 而不是几号
      • 子不语_d788:你好 请问这个shot怎么用 怎么显示出来的 也没见你代码中哪里写了这个方法触发的 谢谢
      • 511f636599e7:怎么直接引入链接使用啊
      • bd72226d46e6:这边有一个轻量,基于原生js开发的vue日历组件,你可以基本上能满足你大部分功能。https://github.com/zwhGithub/vue-calendar
      • 云小西:请问我每次用事件的时候都报错
        [Vue warn]: Error in event handler for "dayClick": "TypeError: this.$dispatch is not a function"
        是为什么?
      • 小黑的眼:怎么修改高度一直不生效
        bd72226d46e6:这边有一个轻量,基于原生js开发的vue日历组件,你可以基本上能满足你大部分功能。https://github.com/zwhGithub/vue-calendar
        c5e479092f4f:里面的样式没法被覆盖掉啊,你解决了吗?
      • 鲸I落:事件more的时候,list中item Class都没有赋值,能升级一下吗?
      • 44703660ff72:我也是设置了locale="zh-cn"无效
        子不语_d788:@黑白ZH 修改原码不起作用是什么原因?比如我把fullCalendar.vue里面的default改成zh 谢谢
        b1bf93517c1a:@Hz_Zhou :+1: :+1: :+1:
        鲸I落:lang='zh'
      • d6fa4a31beb4:locale设置为“zh”没有变化呢?
        tency小七:@鲸I落 谢谢!
        鲸I落:lang='zh'
      • 周星星学编程:组件中点击每个日期的事件有暴露出来吗?还是说我要在源文件里写?
        周星星学编程:@子不语_d788 改了源文件需要重新在该插件下打包一次
        子不语_d788:改源文件好像不起作用呀 你怎么弄的??
      • 小罗程序员:你好!请问有什么方法可以回到当前日期的月份吗?
      • adb858007b72:为何我在本地运行时出现了很多 undefined 呢, 上面月份切换的左右位置,以及下面日期框里都多了个 undefined..... 版本是 1.0.8
      • f89635731927:dalao你之前使用jquery moment 和 fullCalendar的时候、是怎么将数据绑定到fullcalendar的events上的?我现在无法把数据传给events
        桑尼君:@林间de小熊 直接传啊 人家官方文档写的很清楚啊
      • 1024译站:有了Vue,各种组件都可以自己实现,再也不怕各种自定义需求了。
        反者道之动001: @入世_2a50 可以用开源的xxy npm i xxy
        3057010fe665:点击出现弹框是怎么做的
        桑尼君:@认真的书虫 是的啊 主要是开发确实很方便

      本文标题:VUE也有自己的日历组件

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