剑道调度器:拖动事件时调用Ajax
我想知道是否有人有一个在拖动调度程序事件时如何进行异步ajax调用的工作示例。我在不同的位置(调度程序中的资源)上有一个水平分组,并希望在使用拖放时更新每个位置上禁用的时隙。我在moveStart上尝试了几种方法,但都没有取得任何进展 这就是我正在尝试的。sync函数正在调用我的API控制器,应该用新的禁用时隙(slottemplate)更新调度程序,但它永远不会到达函数的“$ajax”部分(就像被阻塞了一样) SyncDisabledTime:剑道调度器:拖动事件时调用Ajax,ajax,drag-and-drop,kendo-ui,kendo-scheduler,Ajax,Drag And Drop,Kendo Ui,Kendo Scheduler,我想知道是否有人有一个在拖动调度程序事件时如何进行异步ajax调用的工作示例。我在不同的位置(调度程序中的资源)上有一个水平分组,并希望在使用拖放时更新每个位置上禁用的时隙。我在moveStart上尝试了几种方法,但都没有取得任何进展 这就是我正在尝试的。sync函数正在调用我的API控制器,应该用新的禁用时隙(slottemplate)更新调度程序,但它永远不会到达函数的“$ajax”部分(就像被阻塞了一样) SyncDisabledTime: var asyncAjaxCalls = [];
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 asyncAjaxCalls=[];
对于(变量i=0;i
getAsyncCall:
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;
var asyncCall=$.ajax({
键入:“获取”,
url:“/api/v1/DisabledTimeTableUnits/”,
数据:{
“模式”:禁用DimetableUnitsMode.OnlyDisabledTimes,
“filterOnOutsideTimeTableSet”:true,
“筛选限制”:true,
“过滤开放小时”:没错,
“filterOnBookinglock”:true,
“filterOnActivity”:selectedActivityId==null?false:true,
“utcTime”:对,
“开始”:时刻(_date).startOf('week').isoWeekday(1).toISOString(),
“结束”:时刻(_date).endOf('week').isoWeekday(7).toISOString(),
“locationId”:locationId,
“活动ID”:selectedActivityId
}
}).done(功能(禁用时间单位){
对于(变量i=0;i
MoveStart
将在您开始拖动时触发一次<代码>移动将在拖动事件时持续激发
但是,我建议您在
MoveEnd
事件时执行服务器端验证。您可以发布您尝试过的代码吗?我已经发布了原始代码(在开始测试之前,我最初希望它看起来像什么)。但不知怎的,今天这一举措起到了怀疑的作用。虽然我得到了一条“UncaughtTypeError:无法读取未定义”错误消息的属性“call”,但我认为这是指代码的另一部分。我使用插槽模板来定义插槽是启用还是禁用。我希望在开始拖动事件时更新此选项,以说明可以在何处移动事件。验证偏离了方向,最后被搁置了。
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;