javascript - 如何在 Vue.js 中删除 FullCalendar-4 事件

标签 javascript vue.js fullcalendar-4

我正在尝试使用 FullCalendarV4Vue.js 构建交互式日历。到目前为止,我已经设置了代码,以使用 handleDateClick 函数中的提示方法启用事件输入。我想为每个事件添加一个功能删除按钮。文档说这可以使用 eventRender 回调来完成。我尝试使用此回调来附加按钮但无济于事。关于如何开展这项工作有什么建议吗?我的代码如下。谢谢!

<template>
  <div class='demo-app'>
    <FullCalendar
      class='demo-app-calendar'
      ref="fullCalendar"
      defaultView="dayGridMonth"
      :header="{
        left: 'prev,next today',
        center: 'title',
        right: 'dayGridMonth,timeGridWeek,timeGridDay,listWeek'
       }"
      :plugins="calendarPlugins"
      :weekends="calendarWeekends"
      :events="calendarEvents"
      @dateClick="handleDateClick"
      />
  </div>
</template>

<script>
import FullCalendar from '@fullcalendar/vue'
import dayGridPlugin from '@fullcalendar/daygrid'
import timeGridPlugin from '@fullcalendar/timegrid'
import interactionPlugin from '@fullcalendar/interaction'

export default {
  components: {
    FullCalendar // make the <FullCalendar> tag available
  },
  data: function() {
    return {
      calendarPlugins: [ // plugins must be defined in the JS
        dayGridPlugin,
        timeGridPlugin,
        interactionPlugin // needed for dateClick
      ],
      calendarWeekends: true,
      calendarEvents: []
    }
  },
  methods: {
    handleDateClick(arg) {
    var newTitle = prompt(arg.dateStr);
      if (newTitle != null) {
        this.calendarEvents.push({
          title: newTitle,
          start: arg.date,
          allDay: arg.allDay
        })
      }
    },
    eventRender: function(event){
      var btn = document.createElement("button");
      btn.appendChild(document.createTextNode("x"));
      event.appendChild(btn);
    }
  }
}
</script>

<style lang='scss'>

// you must include each plugins' css
// paths prefixed with ~ signify node_modules
@import '~@fullcalendar/core/main.css';
@import '~@fullcalendar/daygrid/main.css';
@import '~@fullcalendar/timegrid/main.css';

.demo-app {
  font-family: Arial, Helvetica Neue, Helvetica, sans-serif;
  font-size: 14px;
}

.demo-app-top {
  margin: 0 0 3em;
}

.demo-app-calendar {
  margin: 0 auto;
  max-width: 900px;
}

</style>

最佳答案

您需要将@eventRender方法绑定(bind)到FullCalendar组件 要访问 eventRender 中的元素,您需要使用 event.el。您可以查看the document here

   <FullCalendar
          class='demo-app-calendar'
          ref="fullCalendar"
          defaultView="dayGridMonth"
          :header="{
            left: 'prev,next today',
            center: 'title',
            right: 'dayGridMonth,timeGridWeek,timeGridDay,listWeek'
          }"
          :plugins="calendarPlugins"
          :weekends="calendarWeekends"
          :events="calendarEvents"
          @dateClick="handleDateClick"
          @eventRender="eventRender"
    />

    methods: {
        eventRender(info) {
          var btn = document.createElement("button");
          btn.appendChild(document.createTextNode("x"));
          info.el.appendChild(btn);
        }
    }

关于javascript - 如何在 Vue.js 中删除 FullCalendar-4 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57122239/

相关文章:

javascript - AngularJS 在数据加载时从 Controller 调用指令函数

javascript - 如何在 IE 中自定义窗口关闭消息?

javascript - 如何在动态创建的表中添加 'style'?

javascript - 访问 WebSocket 时出现 InvalidStateError

css - VueJS 2 列表动画未按预期使用转换名称工作

javascript - 一周 View 中的日期与全日历的 react 如何分开?

javascript - Fullcalendar dayRender 未定义单元格属性

javascript - 使用 Soundcloud 和 wordpress iram 播放下一首歌曲

vue.js - 如何使用带有自定义导航栏下拉按钮的 Bootstrap-Vue?

javascript - 动态更改自定义按钮上的文本