Я пытаюсь сделать мой код немного более устойчивым, обрабатывая всевозможные исключения, которые могут возникнуть. Одним из них может быть исключение 404 в веб-запросе Json. Похоже, что метод обратного вызова store.load не вызывается, когда запрос Json получает исключение 404.
код:
Ext.regModel('Activiteit', {
fields: [
{ name: 'id', type: 'int' },
{ name: 'ServerId', type: 'int', mapping: 'Id' },
{ name: 'Title', type: 'string' },
{ name: 'Description', type: 'string' },
],
});
Ext.regApplication({
name: 'App',
launch: function () {
console.log('launch');
var ajaxActiviteitStore = new Ext.data.Store({
model: "Activiteit",
storeId: 'ajaxActiviteitStore',
proxy: {
type: 'ajax',
url: '/senchatest/Activiteit/Gett/',
reader: {
type: 'json',
root: 'activiteiten'
}
}
});
ajaxActiviteitStore.load(function (records, operation, success) {
//the operation object contains all of the details of the load operation
console.log(success);
});
}
});
Это приводит к исключению «Uncaught TypeError: Невозможно прочитать свойство« длина »неопределенного» в строке 7212 файла sencha-touch-debug.js. Я использую Sencha Touch версии 1.1.0.
Трассировка стека:
Uncaught TypeError: Cannot read property 'length' of undefined
Ext.data.Store.Ext.extend.loadRecords sencha-touch-debug.js:7212
Ext.data.Store.Ext.extend.onProxyLoad sencha-touch-debug.js:7024
(anonymous function) sencha-touch-debug.js:8742
Ext.data.Connection.Ext.extend.onComplete sencha-touch-debug.js:17566
Ext.data.Connection.Ext.extend.onStateChange sencha-touch-debug.js:17513
(anonymous function) sencha-touch-debug.js:3421
Что я здесь не так делаю?
Я нашел обходной путь, добавив прослушиватель к прокси, который прослушивает событие «исключение», но я бы предпочел, чтобы вызывалась функция обратного вызова загрузки хранилища. Я делаю что-то не так или это поведение по умолчанию?
Спасибо
Sander