Fullcalendar使用2

本文介绍如何为FullCalendar中的事件添加双击事件监听,而无需修改其源码,并提供了解决方案。此外,还讲解了如何通过修改fullcalendar.css文件来调整事件在视图中的显示样式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前写过一篇关于fullcalendar的使用了

现在主要补充一下。

要解决的问题

1)fullcalendar的函数只提供了日期和事件的单击事件,如何能不修改fullcalendar的源码的基础上让日期和事件响应双击事件?

2)fullcalendar在一个日期上显示的多个事件时日期面板会自动调整,但是事件的大小如何改变呢?

问题1的解决方式:

fullcalendar为我们提供了一个eventAfterRender函数,此函数用来处理当事件在日期面板上渲染完后的处理事件,所以当每当事件渲染完成后我们

可以为每一个事件手工绑定一个双击事件代码如下:

 eventAfterRender:function(event,element,view){
                $(element).on("dblclick",function open4CreatPreAdv(){
                         if(event.isSure == 1){
                             alert("版位已被预约,请重新选择");
                         }else{
                              var uuid = $.query.get("uuid");
                                 var docLibID = $.query.get("docLibID");
                                 var fvID = $.query.get("fvID");
                                 var dataUrl = "AddPrePaperAdv.jsp?code=AddPrePaperAdv&DocLibID="+docLibID+"&FVID="+fvID+"&UUID="+uuid + "&advTypeId=" +advTypeId
                                                + "&editionId=" +editionId+ "&kanwuId=" +kanwuId+ "&fieldId=" + event.fieldId + "&dateStr=" + event.dateStr;
                                 var pos = _getDialogPos(document.getElementById("advType"));
                                     curDialog = e5.dialog({type:"iframe", value:dataUrl},
                                               {showTitle:false, width:650, height:400, pos:pos,resizable:true});
                                 curDialog.show();
                         }
                });
            }

这样的话就可以响应双击事件了。

问题2的解决方式 :

fullcalendar的样式都在fullcalendar.css样式文件中,fullcalendar.css内容不是很复杂但是要理清楚各个元素之间的关系。

通过修改fullcalendar.css中相关的样式足够满足我们的需求的了,让事件的高度大些

样式如下:

.fc-event {
    border: 1px solid #3a87ad; /* default BORDER color */
    background-color: #3a87ad; /* default BACKGROUND color */
    color: #fff;               /* default TEXT color */
    font-size: .85em;
    cursor: default;
    height: 30px;
    line-height:30px;
    }

样式问题都可以修改fullcalendar.css文件来达到我们的要求

### 如何在 Vue 2使用 FullCalendar #### 安装依赖 为了在 Vue 2 项目中集成 FullCalendar,首先需要安装 `@fullcalendar/vue` 和其他必要的插件。以下是推荐的安装命令: ```bash npm install @fullcalendar/core @fullcalendar/daygrid @fullcalendar/interaction @fullcalendar/timegrid vue-full-calendar --save ``` 这些包分别提供了核心功能、日视图和周视图的支持以及交互能力。 #### 创建组件并初始化 FullCalendar 创建一个新的 Vue 组件文件(例如 `MyCalendar.vue`),并将以下代码粘贴到其中[^3]: ```vue <template> <div> <!-- FullCalendar --> <FullCalendar :options="calendarOptions" /> </div> </template> <script> import { defineComponent } from 'vue'; // 导入 FullCalendar 及其插件 import '@fullcalendar/core/vdom'; // 解决 VNode 类型错误 import FullCalendar from '@fullcalendar/vue'; import dayGridPlugin from '@fullcalendar/daygrid'; import interactionPlugin from '@fullcalendar/interaction'; export default defineComponent({ components: { FullCalendar, }, data() { return { calendarOptions: { plugins: [dayGridPlugin, interactionPlugin], // 注册插件 initialView: 'dayGridMonth', // 初始视图为月视图 weekends: true, // 显示周末 events: [ { title: 'Event 1', date: '2023-10-10' }, // 添加事件 { title: 'Event 2', date: '2023-10-20' } ], editable: true, // 启用编辑模式 selectable: true // 支持选择日期范围 }, }; }, }); </script> <style scoped> /* 自定义样式 */ .fc-day-grid-event .fc-content { white-space: normal; } </style> ``` 上述代码展示了如何配置 FullCalendar 的基本选项,包括加载插件、设置初始视图、显示或隐藏周末、添加静态事件列表等。 #### 动态数据绑定与 Vuex 集成 如果希望动态管理事件数据,则可以结合 Vuex 进行状态管理和同步操作。假设已经有一个 Vuex store 存储了所有的事件数据,可以通过计算属性获取最新的事件列表,并将其传递给 FullCalendar[^1]。 修改之前的 `data()` 方法如下所示: ```javascript computed: { eventList() { return this.$store.state.events; // 假设 Vuex state 中存储了一个名为 events 的数组 }, }, watch: { eventList(newEvents) { this.calendarOptions.events = newEvents; // 更新 FullCalendar事件源 }, }, ``` 这样就可以实现当 Vuex 数据发生变化时自动刷新 FullCalendar 展示的内容。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值