1 回答

TA貢獻1836條經驗 獲得超13個贊
您需要的更改更多地與選項卡的使用有關,而不是與 fullCalendar 3 和 5 之間的區(qū)別有關。與復選框相比,一次只能選擇一個選項,因此您需要從選項卡本身找出當前打開的選項卡.
所以這是一個可行的簡單想法:顯示選項卡時,運行一個函數。在該函數中,調用日歷的refetchEvents()
方法 。然后您可以使用日歷的eventDataTransform
回調來決定該事件是否應該顯示在日歷上,基于哪個選項卡當前是“活動的”。這是更可取的,eventDidMount
因為它在事件呈現到日歷上之前運行,而不是之后運行。
像這樣的事情應該這樣做:
HTML:
<div class="row">
? <div class="col-md-12">
? ? <ul class="nav nav-tabs">
? ? ? <li data-tabid="1" class="nav-item"><a class="nav-link active" data-toggle="tab" href="#CalTab1" style="font-size:16px;"><b>EVENT1</b></a></li>
? ? ? <li data-tabid="2" class="nav-item"><a class="nav-link" data-toggle="tab" href="#CalTab2" style="font-size:16px;"><b>EVENT2</b></a></li>
? ? ? <li data-tabid="3" class="nav-item"><a class="nav-link" data-toggle="tab" href="#CalTab3" style="font-size:16px;"><b>EVENT3</b></a></li>
? ? ? <li data-tabid="all" class="nav-item"><a class="nav-link" data-toggle="tab" href="#CalTabAll" style="font-size:16px;"><b>ALL</b></a></li>
? ? </ul>
? </div>
</div>
<div class="row">
? <div class="col-md-12">
? ? <div id="calendar"></div>
? </div>
</div>
腳本:
document.addEventListener("DOMContentLoaded", function () {
? var calendarEl = document.getElementById("calendar");
? var calendar = new FullCalendar.Calendar(calendarEl, {
? ? initialDate: "2020-07-01",
? ? aspectRatio: 1.8,
? ? headerToolbar: {
? ? ? left: "today prev,next",
? ? ? center: "title",
? ? ? right: "dayGridMonth,timeGridWeek,timeGridDay,listMonth"
? ? },
? ? initialView: "dayGridMonth",
? ? events: function (fetchInfo, successCallback, failureCallback) {
? ? ? successCallback([
? ? ? ? {
? ? ? ? ? id: "1",
? ? ? ? ? title: "event1",
? ? ? ? ? start: "2020-07-01 19:30",
? ? ? ? ? end: "2020-07-02 19:30",
? ? ? ? ? backgroundColor: "#39CCCC",
? ? ? ? ? cid: "1"
? ? ? ? },
? ? ? ? {
? ? ? ? ? id: "2",
? ? ? ? ? title: "event2",
? ? ? ? ? start: "2020-07-09 19:30",
? ? ? ? ? end: "2020-07-10 19:30",
? ? ? ? ? backgroundColor: "#F012BE",
? ? ? ? ? cid: "2"
? ? ? ? }
? ? ? ]);
? ? },
? ? eventDataTransform: function (eventData) {
? ? ? var selectedTab = document.querySelector(".nav-tabs li a.active").dataset.tabid;
? ? ? ? ? if (selectedTab == "all" || eventData.cid == selectedTab) {
? ? ? ? ? ? return eventData;
? ? ? ? ? }
? ? ? ? ? else return false; //discard the event
? ? }
? });
? calendar.render();
? $('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
? ? ? calendar.refetchEvents();
? });
});
添加回答
舉報