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

Vue.js使用FullCalendar调用addEvent报Cannot read properties of undefined错误

错误原因

你通过document.getElementById获取到的是原生DOM节点,并非FullCalendar的Vue组件实例,自然无法访问FullCalendar提供的addEvent方法,触发属性读取失败报错。

解决步骤

1. 给FullCalendar组件绑定ref引用

修改模板代码,替换原来的id属性,用Vue的ref标识组件:

<FullCalendar 
  ref="calendarRef"
  :options="calendarOptions"
/>
</section>

2. 修正newEvent方法中获取实例的逻辑

通过this.$refs拿到FullCalendar组件实例后,调用getApi()方法获取日历核心实例,再调用addEvent方法:

methods:{
  newEvent(){
    // 推荐优化:表单值通过v-model绑定到data属性,不要用原生DOM获取,此处保留你原逻辑仅修改核心调用部分
    var eventName = document.getElementById("Ename").value;
    var sDate = document.getElementById("startDate").value;
    var eDate = document.getElementById("endDate").value;
    var type = document.getElementById("bookingType").value;
    var number = document.getElementById("numberOfPeople").value;
    
    // 正确获取FullCalendar实例
    const calendarApi = this.$refs.calendarRef.getApi()
    // 调用addEvent新增日程,自定义属性可直接写入事件对象中
    calendarApi.addEvent({
      title: eventName,
      start: sDate,
      end: eDate,
      allDay: true,
      type: type,
      numberOfPeople: number
    });
    alert('操作成功,请更新后端数据库...');
  }
}

可选优化建议

  • 表单输入项全部用v-model绑定到data内的响应式变量,避免直接操作DOM获取值,符合Vue开发规范
  • 新增日程前可以加参数非空校验,避免传入无效值导致渲染异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 13:15:07