Ext JS存储加载监听器不起作用

时间:2018-04-13 03:15:35

标签: extjs web-applications

我希望将AJAX响应所接收的值保存在JavaScript数组中的Ext JS代理中。我的代码看起来像这样:

var nodelist = [];
var store = Ext.create('Ext.data.Store', {
    model: 'Nodes',
    url: 'sequencing',
    proxy: {
        type: 'ajax',
        url: 'sequencing',
        reader: {
            type: 'json',
            root: 'Nodes'
        }
    },
    listeners: {
        'load': function() {
            var StoreLength = store.data.length;
            for (var i = 0; i < StoreLength; i++) {
                nodelist.push(store.data.items[i].data.text);
            };
        }
    },
    autoLoad: true
});
store.load();
var node_rec = nodelist;

但是store.load();没有调用上面的load侦听器?有人可以解决我的问题吗?

1 个答案:

答案 0 :(得分:0)

在当前事件处理程序的出口处调用

store.load()。加载数据存储是异步发生的,所以当它加载存储时,执行从下一行继续。因此,在调用load之后,您无法直接使用nodelist变量,因为此时不会调用load,因此即使最终填充了商店,nodelist也将为空。

因此,您可以向load方法添加一个回调函数,该方法将在存储加载后调用。

store.load({
    callback: function(records){
        console.log(records); //verify whether you are getting records from the URL     
    }
});