我想知道是否有人有一个工作示例,说明如何在拖动调度程序事件时进行异步 ajax 调用。我在不同的位置(调度程序中的资源)有一个水平分组,并且希望在使用拖放时更新每个位置的禁用时间段。我尝试了一些使用 moveStart 的方法,但都没有取得任何进展。
这是我正在尝试的。同步函数正在调用我的 API 控制器,并且应该使用新的禁用时间槽(槽模板)更新调度程序,但它永远不会到达函数的“$ajax”部分(就像它被阻塞一样)。
moveStart: function (e) {
console.log(e.event);
selectedActivityId = e.event.activityId;
syncDisabledTimes(e.event.start);
同步禁用时间:
var asyncAjaxCalls = [];
for (var i = 0; i < selectedLocations.length; i++) {
asyncAjaxCalls.push(getAsyncCall(selectedLocations[i].locationId, e.event.start));
}
ajaxIsRdy = false;
$.when.apply($, asyncAjaxCalls).done(function () {
ajaxIsRdy = true;
var scheduler = data();
scheduler.view(scheduler.view().name);
});
获取异步调用:
var asyncCall = $.ajax({
type: "GET",
url: "/api/v1/DisabledTimeTableUnits/",
data: {
'mode': DisabledTimeTableUnitsMode.OnlyDisabledTimes,
'filterOnOutsideTimeTableSet': true,
'filterOnSeasonLimits': true,
'filterOnOpeningHours': true,
'filterOnBookinglock': true,
'filterOnActivity': selectedActivityId === null ? false : true,
'utcTime': true,
'start': moment(_date).startOf('week').isoWeekday(1).toISOString(),
'end': moment(_date).endOf('week').isoWeekday(7).toISOString(),
'locationId': locationId,
'activityId': selectedActivityId
}
}).done(function (disabledTimeUnits) {
for (var i = 0; i < selectedLocations.length; i++) {
if (selectedLocations[i].locationId === locationId) {
selectedLocations[i].disabledTimeSlots = disabledTimeUnits;
}
}
});
return asyncCall;