Кендо UI RequestEnd никогда не вызывается

Попытка добавить спиннер (kendo.ui.progress), чтобы показать выполняемые операции crud, создать стартовый спиннер в событии сохранения и завершить в привязке к данным, но для удаления (уничтожить) запустить в событии удаления, но нет способа определить, когда уничтожение завершено. Существует событие requestEnd, но оно никогда не вызывается - возможно, оно не поддерживается в более старой версии kendo ui.

Есть еще один способ - определить ajax-функцию внутри операции уничтожения, например destroy:function(options){$. Ajax...}, а также при успешном или неудачном обратном вызове ajax stop spinner, но я не хочу этого делать.

Могу ли я узнать, когда завершена операция уничтожения, кроме двух упомянутых выше решений?

2 ответа

Решение

С помощью requestStart, sync, requestEnd показывать и прятать прядильщик не разумно. Таким образом, вы должны написать код для отображения и скрытия счетчика в каждом источнике данных. что произойдет, если код показа / скрытия изменился?

Лучшая идея - определить глобальный обработчик, который будет показывать счетчик после первого запроса и скрывать счетчик после последнего ответа. Global Ajax Event Handlers лучший в этом сценарии.

.ajaxStart(): Register a handler to be called when the first Ajax request begins.

.ajaxStop(): Register a handler to be called when all Ajax requests have completed.


пример:

$( document ).ajaxStart(function() {
    kendo.ui.progress($("#app"), true);
});
//----------------------------------------------
$( document ).ajaxStop(function() {
    kendo.ui.progress($("#app"), false);
});

Вы можете использовать sync событие. Он запускается после того, как источник данных сохраняет изменения элемента данных. http://docs.telerik.com/kendo-ui/api/framework/datasource

dataSource    : {
   transport   : {
     read: {
         url:...
     }
   },

   sync: function () {
      kendo.ui.progress($("#loading"), false);

   }
}
Другие вопросы по тегам