Невозможность отобразить модель в JSONStore с помощью JsonReader в Sencha Touch

#mapping #sencha-touch #jsonstore #jsonreader

#сопоставление #sencha-touch #jsonstore #jsonreader

Вопрос:

Я столкнулся с проблемой в sencha при отображении внешних данных.Модель JSONStore с использованием Ext.data.JsonReader.

Ответ Json от сервера (модель сервера):

 {"rows":[{"id":1,"firstname":"Bill"},{"id": 2,"firstname":"Ben"}]}
  

Модель, используемая в Json Store:

 Ext.regModel( 'mycabinet', {
fields: [ 
{ name : 'DeviceId', type: 'int' },
'CabinetName']
});
  

код для чтения json:

 var iccDeviceReader = new Ext.data.JsonReader({
// metadata configuration options:
idProperty: 'id',
root: 'rows',
fields: [
{name: 'CabinetName', mapping: 'firstname'},
{name:'DeviceId',mapping:'id'}
]
});
  

код хранилища json:

 app.iccDS = new Ext.data.JsonStore( {
model : 'mycabinet',
sorters  : 'CabinetName',
getGroupString : function(record) { return record.get('CabinetName')[0]; },
proxy    : {
type: 'ajax',
url : '/icc/js/data.js',
reader:iccDeviceReader
},
autoLoad: true
} );
  

Я ожидаю, что модель «mycabinet» будет заполнена «моделью сервера». Однако сопоставление не происходит.
Я даже пытался использовать convert без какого-либо успеха (name:’DeviceID’,mapping:’id’,convert: function (v){return v.id ;})

Любая помощь будет высоко оценена. Спасибо

Ответ №1:

Удалите опцию «поля» из вашего устройства чтения и измените ‘CabinetName’ на {name: ‘CabinetName’, сопоставление: ‘firstname’} в конфигурации вашей модели. Кроме того, idProperty также должен входить в конфигурацию вашей модели.

Ответ №2:

Следующий код решил мою проблему…

 Ext.regModel( 'mycabinet', {
fields: [ 
{ name : 'DeviceId', type: 'int',mapping:'id' },
{name: 'CabinetName', mapping: 'firstname'}]
});

app.iccDS = new Ext.data.JsonStore( {
model : 'mycabinet',
sorters  : 'CabinetName',
getGroupString : function(record) { return record.get('CabinetName')[0]; },
proxy    : {
type: 'ajax',
url : '/icc/js/data.js'
},
autoLoad: true
} );
  

Я больше не использую JsonReader.