Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.11.2017, 20:11
Аватар для Sogl
Аспирант
Отправить личное сообщение для Sogl Посмотреть профиль Найти все сообщения от Sogl
 
Регистрация: 12.05.2016
Сообщений: 95

Ручная загрузка 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.
Ответить с цитированием
  #2 (permalink)  
Старый 09.11.2017, 02:43
Аватар для Sogl
Аспирант
Отправить личное сообщение для Sogl Посмотреть профиль Найти все сообщения от Sogl
 
Регистрация: 12.05.2016
Сообщений: 95

В общем, проблема была в том, что нужно было предварительно декодировать 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 нормально отображает количество записей.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Порядок загрузки Store Capito882 ExtJS 0 18.07.2016 19:17
Store сохранение изменений в БД Danirk ExtJS 2 06.03.2013 10:58
ExtJS4 Обход store pauluss ExtJS 4 14.01.2013 14:25
Данные из store не успевают попадать в chart kalya ExtJS 0 02.11.2011 14:14
GridPanel "теряет" свой store при многократном вызове экземпляров GridPanel Lokich ExtJS 1 09.09.2011 10:12