1 回答

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超4個贊
這里最簡單的選擇是使其成為calendar全局的,以便可以在所有范圍內(nèi)訪問它。
例如
<script>
var calendar; //global variable
document.addEventListener('DOMContentLoaded', function() {
var calendarEl = document.getElementById('calendar');
calendar = new FullCalendar.Calendar(calendarEl, { //don't re-declare it here, just assign it
///...etc
但全局變量通常不是最佳實(shí)踐 - 如果您不小心,它可能會導(dǎo)致其他問題。因此,另一個選擇是停止使用內(nèi)聯(lián)事件處理程序來觸發(fā) saveData,而是在 DOMContentLoaded 塊內(nèi)添加一個事件處理程序,當(dāng)然該塊calendar已經(jīng)在范圍內(nèi)。您使 saveData 從 AJAX 調(diào)用返回一個 Promise,然后在事件處理程序中向其附加一個.done()回調(diào),并在其中調(diào)用 refetchEvents。
所以在這個版本中,你的按鈕將變成
<button type="button" class="btn btn-primary" id="savedata">SAVE</button>
saveData() 將變?yōu)椋?/p>
function saveData()
{
var Room = document.getElementById("Room").value;
var EventName = document.getElementById("EventName").value;
var start = document.getElementById("start").value;
var end = document.getElementById("end").value;
var promise = $.ajax({
url: "addEvent.php",
type:"POST",
data:{ EventName: EventName, start:start, end: end },
});
$('#ModalAdd').modal('hide');
return promise;
}
最后在 DOMContentLoaded 區(qū)域:
document.addEventListener('DOMContentLoaded', function() {
//....everything which is already there....and then...
$("#savedata").click(function() {
var promise = saveData();
promise.done(function(data) {
calendar.refetchEvents();
});
});
});
盡管看起來需要更多工作,但這是一個比使用全局變量更好的結(jié)構(gòu)化版本。
- 1 回答
- 0 關(guān)注
- 163 瀏覽
添加回答
舉報