Ручная загрузка store
Всем привет!
Есть у меня рабочий Fiddle с ajax прокси, который я пытаюсь переделать на memory прокси. Пока как-то не шибко получается. Вот основной код ручной загрузки данных Ajax-запросом в store: // app/model/Employees.js file Ext.define('Fiddle.model.Employees', { extend: 'Ext.data.Model', entityName: 'Employees', fields: [ { name: 'profile_pic' }, { type: 'int', name: 'age' }, { type: 'string', name: 'last', mapping: 'name.last' }, { type: 'string', name: 'first', mapping: 'name.first' }, { type: 'string', name: 'email' } ], proxy: { type: 'memory', reader: { type: 'json', rootProperty: 'items', totalProperty: 'total', successProperty: '' } } }); // app/store/Employees.js file Ext.define('Fiddle.store.Employees', { extend: 'Ext.data.Store', pageSize: 30, // items per page alias: 'store.employees', model: 'Fiddle.model.Employees', }); //app.js fule - launch() function var store = Ext.create('Fiddle.store.Employees'); console.log(store); Ext.Ajax.request({ url: 'mates.json', success: function(resp) { var result = resp.responseText; console.log(result); // store.loadRawData(result); store.loadData(result); console.log(store); console.log(store.getAt(0)); }, }); В итоге я получаю в своем store 3386 записей (посимвольно с json-файла) и вот так выглядит первая запись, которую вывожу в консоль: ![]() Что я делаю не так? :) И куда правильнее прописывать proxy — в store или в model? В некоторых примерах и в моем рабочем проекте в model, но в большинстве кода встречаемого мной прописывают в store. |
В общем, проблема была в том, что нужно было предварительно декодировать JSON из строки в объект.
В итоге сделал так: //in Grid panel js file listeners: { afterrender: function(grid, evt) { var myStore = grid.getStore(); Ext.Ajax.request({ url: 'mates.json', success: function(resp) { var result = Ext.decode(resp.responseText); myStore.getProxy().data = result; myStore.load(); }, }); } } В таком варианте даже paddingtoolbar нормально отображает количество записей. |
Часовой пояс GMT +3, время: 04:55. |