这是我的xml代码:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<investors>
<investor name="Active"/>
<investor name="Aggressive"/>
<investor name="Conservative"/>
<investor name="Day Trader"/>
<investor name="Very Active"/>
</investors>
<events>
<event period="3 Month Expiry"/>
<event period="LEAPS"/>
<event period="Monthlies"/>
<event period="Monthly Expiries"/>
<event period="Weeklies"/>
</events>
<prices>
<price rate="$0.5"/>
<price rate="$0.05"/>
<price rate="$1"/>
<price rate="$22"/>
<price rate="$100.34"/>
</prices>
</root>
这是我的代码:
Ext.onReady(function(){
var hi= [],hello = [], hey = [];
Ext.getBody().mask(true, '<div class="demos-loading">Loading…</div>');
var tsstore = new Ext.data.Store({
url: 'xmlformat.xml',
autoLoad: true,
reader: new Ext.data.XmlReader({
record: 'investor'
}, [{name: 'name', mapping: '@name'}])
});
var evstore = new Ext.data.Store({
url: 'xmlformat.xml',
autoLoad: true,
reader: new Ext.data.XmlReader({
record: 'event'
}, [{name: 'Eve', mapping: '@period'}])
});
var prstore = new Ext.data.Store({
url: 'xmlformat.xml',
autoLoad: true,
reader: new Ext.data.XmlReader({
record: 'price'
}, [{name: 'Pri', mapping: '@rate'}])
});
var tsgrid = new Ext.grid.GridPanel({
store: tsstore,
columns: [{header: "Trading Style", dataIndex: 'name', sortable: true}],
renderTo:'example-grid',
width:540,
height:200
});
var evgrid = new Ext.grid.GridPanel({
store: evstore,
columns: [{header: "Events", dataIndex: 'Eve', sortable: true}],
renderTo:'example-gridone',
width:540,
height:200
});
var prgrid = new Ext.grid.GridPanel({
store: prstore,
columns: [{header: "Price", dataIndex: 'Pri', sortable: true}],
renderTo:'example-gridtwo',
width:540,
height:200
});
hello.push(tsstore.getRange());
});
存储在“prstore”中的数据,我希望它将其复制到数组中。
我希望输出类似于:
hello = {"$0.5","$0.05","$1","$22","$100.34"}
但它不适合我 请帮忙 谢谢
答案 0 :(得分:5)
getRange()应该这样做。确保“R”大写。
假设你的问题只是一个拼写错误,如果getRange()没有返回记录数组,那么你的商店很可能没有正确加载记录。您确定您的商店正在正确加载记录吗?加载后使用萤火虫检查商店。
修改强> 在商店加载数据之前,您似乎正在运行getRange()。你在创建时加载商店(autoLoad:true),但是你立即运行getRange()(而XMLHttpRequest在后台仍处于待处理状态!)。
您需要侦听商店的load
事件,并拥有处理数据的处理程序。
EDIT2 此作品:
Ext.onReady(function(){
console.log('hi');
var prstore = new Ext.data.Store({
url: 'xmlformat.xml',
autoLoad: true,
reader: new Ext.data.XmlReader({
record: 'price'
}, [{name: 'Pri', mapping: '@rate'}])
});
prstore.on('load',function(store,records,opts){
console.log(store.getRange());
});
});
您应该能够在firebug控制台中看到一组Ext.data.Record对象。