2015-07-09 3 views
0

Когда моя сетка загружается через прокси AJAX, я использую клавишу «сообщение» ответа, чтобы передать сообщение об ошибке для исключений или необязательное информационное сообщение для успешных нагрузок. Например:Как я могу ответить на успешную загрузку сетки в ExtJS 6 и проверить ответ?

{ 
    results: 100, 
    success: true, 
    rows: [ { ...data here... } ], 
    message: "Query took 2.2 milliseconds" 
} 

Я спросил similar question при использовании ExtJS 4.x и 5.0, и я был в состоянии использовать afterRequest событие Прокси-сервер, чтобы заглянуть в ответ, извлечь сообщение и отобразить его.

Но это было удалено в 5.1, и я не могу найти эквивалент в 6.0. Я также нашел this answer от кого-то с очень похожим вопросом, но принятый ответ расширения Ext.data.proxy.Ajax не работает для меня в 6.0 - он освобождается при вызове «this.callParent (arguments)».

Я был в этом часом, выталкивая и подталкивая конфигурацию прокси, читателя, магазина и сетки и искал Google. Документация для 6.0, как обычно, бесполезна, когда дело касается событий.

Единственное событие, которое я могу обнаружить, что срабатывает при успешной загрузке AJAX, - это событие Store's «load». К сожалению, у Хранилища нет доступа к ответу JSON, который обрабатывал прокси, по крайней мере, насколько я могу судить. Код:

var ResultsDataStore = Ext.create("Ext.data.Store", { 
    listeners: { 
     load: function() { console.log("storeload"); } 
    }, 
    proxy: ... 

Как я могу либо:

(1) Доступ к ответу от события нагрузки магазина или

(2) Прослушайте некоторое другое событие, которое имеет доступ к сообщению прошло в ответе?

ответ

0

Я предложил бы использовать опцию transform конфигурации Читателя:

var resultStore = new Ext.data.Store({ 
    proxy: { 
     reader: { 
      type: 'json', 
      transform: function(data) { 
       var message = data.message; 
       ... 
       return data; 
      } 
     } 
    } 
}); 

Подробнее в документации: http://docs.sencha.com/extjs/6.0/6.0.0-classic/#!/api/Ext.data.reader.Reader-cfg-transform

+0

Отлично! Странно, что нет более подходящего события, похожего на собственный «успешный» вызов класса Ajax. – richardtallent