打破了我的頭,我需要一點幫助。FullCalendar通過event.id或event.source刪除所有eventSources或事件
故事背景
我創建一個日曆選擇工具來凸顯無天與fullCalendar背景事件。用戶界面允許拖動選擇日期或突出顯示一天。當用戶再次選擇突出顯示時,應該將其刪除。使用AJAX,我可以添加或刪除選擇內容,並且在刷新頁面時,以前的事件將從容器上的data-events
加載。
<div class="container" data-class="calendar" data-events='<?=$jsoncalendarinfo?>' data-user-id="<?php echo $id; ?>">
<div class="row">
<div class="col-lg-3 feedback p-y-2">
<?php
foreach ($calendarinfo as $item) {
?>
<ul data-start="<?=strtotime($item->date_from)?>">
<li>Vrij</li>
<li><?=date('d/m/Y',strtotime($item->date_from))?> - <?=date('d/m/Y',strtotime($item->date_to))?></li>
</ul>
<?php
}
?>
</div>
<div class="col-lg-9 calendar p-y-2"><!-- fullcalendar.js rendering --></div>
</div>
</div>
問題
當我刷新頁面,我點擊一個亮點(一天或範圍),所有的亮點都被刪除。現在我必須補充我可能會在events
,eventSource
和eventSources
之間感到困惑。這個文檔對它背後的想法並不是非常明確,所以它更像是一個對我而言的嘗試和錯誤。
我的代碼
eventSources: [this.formatEvents(this.events)],
selectOverlap: function (event) {
self.calendar.fullCalendar(events.removeEventSource, event.source);
self.removeFeedback(event);
return !event.block;
},
我可能已經被劫持的這個功能得到我想要的東西,但同樣,我似乎無法找到要取消選擇高亮顯示的日期或範圍的恰當方法。這不是unselect
方法。
他們的代碼
沒有在selectOverlap
=>self.calendar.fullCalendar
可用實例的文檔指出您可以刪除eventSources
但不events
??? 我試圖在events
和eventSources
=>中添加我的jsondata => f ***的區別是什麼? 我試圖刪除event.id
和event.source
=>他們都清除!?! 我試圖清理event
對象,但是在event.sources.events
中,所有事件都是通用嵌套的。 我進入圖書館看看發生了什麼=> ln。 11161
function removeEventSource(matchInput) {
removeSpecificEventSources(
getEventSourcesByMatch(matchInput)
);
}
// if called with no arguments, removes all.
function removeEventSources(matchInputs) {
if (matchInputs == null) {
removeSpecificEventSources(sources, true); // isAll=true
}
else {
removeSpecificEventSources(
getEventSourcesByMatchArray(matchInputs)
);
}
}
它基本上從不比較,因爲對象太不同了。如果我使用我的event.id,它會嘗試與事件對象進行比較。當我使用event.source
它發現在同一來源和BAM下的所有事件,全部消失:s
任何人在這裏爲我歡呼?
DEMO
https://jsfiddle.net/tive/vxrkmmn3/
只需點擊高亮顯示的日期。這些是2個範圍,應該只刪除一個範圍。不幸的是它刪除了所有 如果您突出顯示其他日期或範圍,則可以將其刪除而不會出現問題。一旦頁面刷新,它不再工作。
事件源全部文檔只是分組事件的方式,如果有用的話您的活動來自不同的來源(後端)。如果您沒有多個後端或其他邏輯分組事件,則可能不需要它們。所以如果你刪除一個事件源,你將刪除所有來自該源的事件。您是否在嘗試刪除單個事件時選擇它?也許https://fullcalendar.io/docs/event_data/removeEvents/是你需要的方法 – ADyson
聽起來你是對的!不能相信我錯過了,因爲我確信我已經在尋找這個功能。要儘快嘗試。 –
對!很愚蠢......'self.calendar.fullCalendar(events.removeEvents,event.id);'就像一個魅力。隨意添加這個答案。 –