Kendo调度程序:拖动事件时调用Ajax

时间:2014-04-25 12:06:31

标签: ajax drag-and-drop kendo-ui kendo-scheduler

我想知道是否有人在拖动调度程序事件时有一个如何进行异步ajax调用的工作示例。我在不同位置(调度程序中的资源)上有一个水平分组,并希望在使用拖放时更新每个位置上的禁用时隙。我已经尝试了一些使用moveStart的方法,但没有一个方法取得任何进展。

这是我正在尝试的。同步功能正在调用我的API控制器,并应该使用新的禁用时隙(slottemplate)更新调度程序,但它永远不会到达函数的' $ ajax' - 它就像它一样被阻止了。

moveStart: function (e) {
  console.log(e.event);
  selectedActivityId = e.event.activityId;
  syncDisabledTimes(e.event.start);

syncDisabledTimes:

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);
});

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;

1 个答案:

答案 0 :(得分:0)

当你开始拖动时,

MoveStart会触发一次。拖动事件时,Move会不断发射。

但是,我建议您在MoveEnd事件后执行服务器端验证。