Отслеживаем успешность CRUD операции на ExtJS 5
Доброго времени суток!Работаю с ExtJS 5. У меня возникла следующая проблема:
через API на сервер отправляется запрос. Сервер проверяет входящие параметры и либо возвращает JSON с параметром
success = true, либо success = false. Мне необходимо было проверить значение параметра success - в случае успеха (true) программа работает в штатном режиме, если наоборот (false), неудачная запись удаляется из store, и программа продолжает свою работу без каких-либо ошибок.Казалось бы, сервер вернул
false и какое-то сообщение, значит возникла какая-то авария. Но на самом деле это не так. ExtJS воспринимает подобные ответы, как штатные, поэтому по умолчанию не "ловит" такие ошибки.А решается эта проблема просто. Стор имеет пустые функции
onCreateRecords, onUpdateRecords, onDestroyRecords, которые можно переопределить. Они вызываются после добавления, обновления и удаления записи соответственно. Причем описываются ни в listeners, ни в proxy, а в самом store.Описание store имеет следующий вид:
Ext.define('некоторое название стора',{
extend : 'Ext.data.Store',
model : 'некоторая модель стора',
autoSync: true,
proxy : {
type : 'ajax',
api: {
create: '...', // сервис создания записи
update: '...', // сервис обновления данных
delete: '...' // сервис удаления данных
},
url : 'некоторый url', // сервис чтения данных
reader : {
type : 'json',
rootProperty : 'data',
totalProperty: 'totalCount',
successProperty: 'success'
}
},
remoteFilter: true,
remoteSort: true,
onUpdateRecords: function(records, operation, success) {
if(!success) {
this.rejectChanges(); // удаление из стора неудачной записи
};
},
onCreateRecords: function(records, operation, success) {
if(!success) {
this.rejectChanges();
};
},
onDestroyRecords: function(records, operation, success) {
if(!success) {
this.rejectChanges();
};
}
});
Спасибо за внимание. Всем успехов! :)