javascript - 如何在 Vue.js 中删除 FullCalendar-4 事件
问题描述
我正在尝试使用FullCalendarV4
and构建交互式日历Vue.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
方法绑定到FullCalendar
组件要访问其中的元素eventRender
,您需要使用event.el
. 您可以在此处查看文档
<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);
}
}
推荐阅读
- c++ - 指向非 nullptr 结构时出现分段错误
- javascript - 在 React 应用程序中添加项目时,项目列表未更新
- javascript - 单击按钮时获取表单ID JavaScript
- c - 为什么我的程序会输出一些奇怪的符号?
- javascript - 如何在 Angular 中使用 Jasmine 测试回调
- node.js - 使用 Node 和 Express 从远程 url 获取 csv 数据
- html - 如何防止 Jsoup 转义 html?
- android - 如何写“to the power”和一些像Android中显示的文字?
- javascript - 我在调用 openweathermap 时收到 SyntaxError: Unexpected token < in JSON at position 0
- javascript - 网页抓取:无法使用页面标签移至下一页