You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FullCalendar3.9如何在viewRender回调中正常更新events属性

FullCalendar v3 viewRender回调中更新events的实现方案

你调用this.setEvents失效的核心原因是FullCalendar v3是基于jQuery封装的版本,所有API方法都需要通过jQuery选择器调用,viewRender回调中的this并不指向FullCalendar实例,无法直接调用实例方法,该更新需求完全可以实现,正确实现方式如下:

实现方案

方案1:在viewRender中手动调用API更新

按照v3的API规范,更新events的语法为 $(日历选择器).fullCalendar('方法名', 参数),修改后的viewRender代码如下:

viewRender: function(view, element) {
    if (view.name == 'listDay') {
        showCustomView();
        // 发起接口请求获取新的事件数据
        $.ajax({
            url: '你的业务接口地址',
            type: 'GET',
            // 可传入当前视图的起止时间,只查询对应时间段的事件
            data: {
                start: view.start.format(),
                end: view.end.format()
            },
            success: function(res) {
                // 假设res.data为符合FullCalendar格式要求的事件数组
                const newEventList = res.data;
                // 全量替换现有事件
                $('#request_calender').fullCalendar('setEvents', newEventList);
                // 如果是追加新事件不覆盖原有事件,使用以下写法即可
                // $('#request_calender').fullCalendar('addEvents', newEventList, true);
            }
        })
    }
}

注意事项:

  • 不要在更新events后调用会触发视图重新渲染的方法(如goToDate、切换视图等),避免造成请求死循环
  • 可以加缓存判断,同一时间段的事件只请求一次,减少接口调用次数

方案2:使用内置的动态events回调(更推荐)

FullCalendar v3本身支持将events属性设置为回调函数,视图切换时会自动调用该函数获取对应时间段的事件,无需手动监听viewRender事件,更符合官方设计规范,修改初始化代码的events配置即可:

$("#request_calender").fullCalendar({
    // 其他原有配置保持不变
    // 将原来的events: calender_array 替换为以下回调
    events: function(start, end, timezone, callback) {
        $.ajax({
            url: '你的业务接口地址',
            data: {
                start: start.format(),
                end: end.format()
            },
            success: function(res) {
                // 首次加载+视图切换时都会自动调用,返回事件数组即可
                callback(res.data);
            }
        });
    },
    // 其他原有配置保持不变
})

内容的提问来源于stack exchange,提问作者robrob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 06:45:03