Событие загрузки хранилища данных ExtJs 4.2

Я использую ExtJs 4.2.1. Параметр records события загрузки магазина отображается как null.

st = Ext.getStore('MyJsonStore');
st.on('load', function(store, records, successful, eOpts) {
    //Block of codes
    var access = records[0].data.access;
    //Block of codes
});
st.load();

Сообщение об ошибке выводится на консоль как: -

TypeError: Cannot read property '0' of null

Кто-нибудь может мне с этим помочь?


person rohan    schedule 04.07.2013    source источник
comment
Вы можете разместить свой магазин?   -  person Aminesrine    schedule 04.07.2013


Ответы (4)


Как выглядит твоя модель? Вы пытаетесь что-то сделать с данными, прежде чем они попадут в магазин? Если это так, вам, вероятно, следует использовать считыватель в прокси-сервере для конфигурации магазина, как показано ниже. В противном случае ответ @ user1896597 должен быть подходящим.

Ext.define('MyJsonStore', {
    extend: 'Ext.data.Store',
    model: 'YourModel',
    proxy: {
        type: 'ajax',
        url: '/someurl',
        reader: {
            successProperty: 'success', // if success property
            type: 'json',
            root: 'results', // if root

            // THIS IS THE FUNCTION YOU NEED TO MANIPULATE THE DATA
            getData: function(data){
                Ext.each(data.results, function(rec) {
                    var access = rec.access;
                });

                return data;
            }
        },
        writer: {
            type: 'json'
        }
    }
});
person radtad    schedule 16.07.2013

Вы можете это попробовать?

Если это не работает, опубликуйте JSFiddle, возможно, с вашим кодом что-то не так.

store.load({
    callback: function(records, operation, success) {
        alert(records.length);
    }
});
person player    schedule 05.07.2013

Попробуйте:

st=Ext.getStore('MyJsonStore');
st.load();
st.on('load',function (store, records, successful, eOpts ){
     //Block of codes
     var access=records[0].data.access;
     //Block of codes
});
person Aminesrine    schedule 04.07.2013

Может быть, уже слишком поздно помогать вам, но я нашел решение (для записей):

st = Ext.getStore('MyJsonStore');
st.on('load', function(store, records, successful, eOpts) {
    //Block of codes
    var access = records[0].get('access');
    //Block of codes
});
st.load();

Таким образом, теперь вы можете получить доступ к строке данных.

person Fabio Beneditto    schedule 23.04.2018