![](/img/trans.png)
[英]Fullcalendar v5 - how to call already initialised and rendered calendar
[英]Fullcalendar V4 get initialised calendar by documentId
我们有一个可以包含多个完整日历实例的页面。
我允许用户动态选择他们的主题和视图以及各种其他选项。
在V3 中,我们曾经:
我们可以很容易地传递一个元素 Id并通过以下方式销毁它:
$("#someId").fullCalendar(‘destroy’)
在V4 中,我们不能再只传递元素 Id。 看起来我们需要创建一个全局变量来保存每个日历。
有没有办法根据元素 Id获取初始化的日历?
您可以在日历对象上使用 destroy() 方法。
下面是一个例子,
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8' />
<link href='../packages/core/main.css' rel='stylesheet' />
<link href='../packages/daygrid/main.css' rel='stylesheet' />
<script src='../packages/core/main.js'></script>
<script src='../packages/interaction/main.js'></script>
<script src='../packages/daygrid/main.js'></script>
<script>
document.addEventListener('DOMContentLoaded', function () {
var calendars = {};
create_calendar('calendar'); // creates calendar for element with id 'calendar'
create_calendar('calendar2'); // creates calendar for element with id 'calendar2'
destroy_calendar('calendar'); // destroys calendar for element with id 'calendar'
// function to destroy calendar that take element id as an argument
function destroy_calendar(id) {
calendars[id].destroy();
delete calendars[id];
}
// function to create calendar that take element id as an argument
function create_calendar(id) {
var calendarEl = document.getElementById(id);
var calendar = new FullCalendar.Calendar(calendarEl, {
plugins: ['interaction', 'dayGrid'],
defaultDate: '2019-03-12',
editable: true,
eventLimit: true, // allow "more" link when too many events
});
calendars[id] = calendar;
calendar.render();
}
});
</script>
<style>
body {
margin: 40px 10px;
padding: 0;
font-family: Arial, Helvetica Neue, Helvetica, sans-serif;
font-size: 14px;
}
#calendar,#calendar2 {
max-width: 900px;
margin: 0 auto;
}
</style>
</head>
<body>
<div id='calendar'></div>
<div id='calendar2'></div>
</body>
</html>
终于想通了这一点。 我知道 JQuery 不再是那个酷孩子了,但它仍然有它的用途:
<script>
// Globally setup your calendar by initializing it
var calendarEl = document.getElementById('calendar');
var myCalendar = new FullCalendar.Calendar(calendarEl, {
initialView: 'dayGridMonth'
});
document.addEventListener('DOMContentLoaded', function() {
// Any changes to the calendar before it renders the first time
});
// Any JQuery event can then access the initialized object
$(".calendarSource").click(function () {
console.log(myCalendar.getDate());
});
<script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.