我希望将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
侦听器?有人可以解决我的问题吗?
答案 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
}
});