ExtJs 4.2数据存储加载事件

时间:2013-07-04 07:58:21

标签: extjs4.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

任何人都可以帮我吗?

4 个答案:

答案 0 :(得分:2)

你能试试吗?

如果这不能在JSFiddle上发布,那么您的代码可能还有其他问题。

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

答案 1 :(得分:1)

尝试:

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
});

答案 2 :(得分:1)

你的模特是什么样的?您是否尝试在数据进入商店之前对数据执行某些操作?如果是这样,您可能应该在代理中使用读取器来进行商店配置,如下所示。否则,@ 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'
        }
    }
});

答案 3 :(得分:0)

也许为时已晚,无法帮助你,但我找到了一个解决方案(记录):

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();

这样,您现在可以访问数据行。