Установить функцию обратного вызова для событий виджета кендо

0

Нет документации, которую я могу видеть для добавления обратных вызовов после запуска кода виджета kendo ui. У меня есть следующее объявление виджета кендо ui.

$("#scheduler").kendoScheduler({
    date: new Date("2013/6/13"),    // Change this to current date with twig
    startTime: new Date("2013/6/13 07:00 AM"), // Change this to 12:00 AM of current date
    allDaySlot: false,
    width:600,
    height:500,
    resize: function(e) {
        if (careGiverIsOccupied(e.start, e.end, e.event, e.resources)) {
            this.wrapper.find(".k-marquee-color").addClass("invalid-slot");
            e.preventDefault();
        }
    },
    resizeEnd: function(e) {
        if (!checkAvailability(e.start, e.end, e.events)) {
            e.preventDefault();
        }
    },
    move: function(e) {
        if (careGiverIsOccupied(e.start, e.end, e.event, e.resources)) {
            this.wrapper.find(".k-event-drag-hint").addClass("invalid-slot");
        }
    },
    moveEnd: function(e) {
        if (!checkAvailability(e.start, e.end, e.event, e.resources)) {
            e.preventDefault();
        }
    },
    add: function(e) {
        if (!checkAvailability(e.event.start, e.event.end, e.event)) {
            e.preventDefault();
        }
        changeColors();
    },
    save: function(e) {
        if (!checkAvailability(e.event.start, e.event.end, e.event)) {
            e.preventDefault();
        }
        changeColors();
    },
    views: [
        "week",
        "month"
    ],
    dataSource: {
        data: [
            {
                eventID: 2,
                title: "Hey man",
                start: new Date("2013/6/13 12:00"),
                end: new Date("2013/6/13 13:30"),
                pending: true,
                permissionToDelete: false,
                careGiverId: 1
            },
            {
                eventID: 1,
                title: "Call Charlie about the project",
                start: new Date("2013/6/13 10:30"),
                end: new Date("2013/6/13 11:30"),
                pending: false,
                permissionToDelete: false,
                careGiverId: 1
            }
            ],
        schema: {
            model: {
                id: "eventID",
                fields: {
                    eventID: { type: "number" },
                    title: { defaultValue: "No title", validation: { required: true } },
                    start: { type: "date" },
                    end: { type: "date" },
                    careGiverId: { nullable: true },
                    pending: { type: "boolean", defaultValue:true },
                    permissionToDelete: { type: "boolean", defaultValue:true },
                    isAllDay: { type: "boolean" }
                }
            }
        }
    },
    group: {
        resources: [ "care" ]
    },
    resources: [
        {
            field: "careGiverId",
            name: "care",
            dataSource: [
                { 
                    // Change the text with care giver name, change value with care giver id
                    text: "Jeffery Dohmer (Care Giver 1)", value: 1, color: "#00FF00" 
                }
            ],
            title: "Care"
        }
    ]
});

Проблема в том, что структура dom моего документа изменяется после того, как обработчики событий, такие как resizeEnd, move, moveEnd, add и save, уволили. То, что я хотел бы сделать, это изменить цвет определенного элемента после, kendoScheduler добавил или сохранил время. Есть ли способ добавить обратный вызов после этого?

Теги:
kendo-ui
kendo-scheduler

2 ответа

0
Лучший ответ

Я нашел элегантный ответ на этот вопрос. По-видимому, есть событие, называемое dataBound: это позволяет запускать обратный вызов после того, как все сделано.

В моем случае я хочу использовать:

dataBound: function(e){

    // Code after widget is finished processing everything

}
  • 0
    Ваш вопрос касался «добавлено или сохранено», пожаров с привязкой к данным для других операций, таких как удаление. Ну, в любом случае, если это работает, это работает.
0

Взгляните на полный пример события в этом сообщении:

read: {
                dataType: "json",
                type: "POST",
                contentType: "application/json; charset=utf-8",
                url: _op.serviceBaseUrl + "ReadX",
                complete: function () {
                      console.log('Tweak your UI here');
                 }
    }

Очевидно, что "полное" событие доступно только при работе с удаленными данными. ,

Также, посмотрите на это событие requestEnd:

 requestEnd: function(e) {
    var response = e.response;
    var type = e.type;
    console.log(type); // displays "read"
    console.log(response.length); // displays "77"
  }

Используйте переключатель на e.type чтобы различать разные операции (тип запроса. Установите "создать", "прочитать", "обновить" или "уничтожить".)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню