数据:var myData = {
total:111,
user:{
name:'aaa',
age:19,
orders:[
{name:'a',num:'100'},
{name:'ab',num:'10'}
]
}
}
User类: Ext.define('User',{
extend:'Ext.data.Model',
fields:[
{name:'name',type:'auto'},
{name:'age',type:'int'}
],
hasMany : {model: 'Order',name:'orders'}
});
Order类:Ext.define('Order',{
extend:'Ext.data.Model',
fields:[
{name:'name',type:'auto'},
{name:'num',type:'int'}
],
belongsTo:{ model:'User',name:'user'}
});
关联数据和代理: var mProxy = Ext.create('Ext.data.proxy.Memory',{
model:'User',
data:myData,
reader:{
type:'json',
root:'user'
}
});问题在这块
读取数据并展示:mProxy.read(new Ext.data.Operation(),function(o){
//o => Ext.data.Operation 1
var users = o.getRecords();
Ext.Array.each(users,function(user){
// user => User 2
var orders = user.raw.orders;
Ext.Array.each(orders,function(order){
//order => Order
alert(order.num);
})
});
});
运行都是没有问题的,读取展示的“1”处,o是一个Operation类,有方法getRecords()可以获取Models
users是一个User集合,也是一个Ext.data.Model集合
到了“2”处,我看了API,也没有找到怎么通过方法把orders取出来,只能用FireBug调试看结构点出来,非常不爽请问:怎么通过ExtJS的API把数据模型中一对多中一中包含的多给取出来?取出来应该是一个Model数组extjs4JavaScript
total:111,
user:{
name:'aaa',
age:19,
orders:[
{name:'a',num:'100'},
{name:'ab',num:'10'}
]
}
}
User类: Ext.define('User',{
extend:'Ext.data.Model',
fields:[
{name:'name',type:'auto'},
{name:'age',type:'int'}
],
hasMany : {model: 'Order',name:'orders'}
});
Order类:Ext.define('Order',{
extend:'Ext.data.Model',
fields:[
{name:'name',type:'auto'},
{name:'num',type:'int'}
],
belongsTo:{ model:'User',name:'user'}
});
关联数据和代理: var mProxy = Ext.create('Ext.data.proxy.Memory',{
model:'User',
data:myData,
reader:{
type:'json',
root:'user'
}
});问题在这块
读取数据并展示:mProxy.read(new Ext.data.Operation(),function(o){
//o => Ext.data.Operation 1
var users = o.getRecords();
Ext.Array.each(users,function(user){
// user => User 2
var orders = user.raw.orders;
Ext.Array.each(orders,function(order){
//order => Order
alert(order.num);
})
});
});
运行都是没有问题的,读取展示的“1”处,o是一个Operation类,有方法getRecords()可以获取Models
users是一个User集合,也是一个Ext.data.Model集合
到了“2”处,我看了API,也没有找到怎么通过方法把orders取出来,只能用FireBug调试看结构点出来,非常不爽请问:怎么通过ExtJS的API把数据模型中一对多中一中包含的多给取出来?取出来应该是一个Model数组extjs4JavaScript
mProxy.read(new Ext.data.Operation(),function(o){
//o => Ext.data.Operation 1
var users = o.getRecords();
Ext.Array.each(users,function(user){
// user => User 2
//var orders = user.raw.orders;
var orders = user.orders();
orders.each(function(order){
alert(order.get('name'));
});
// Ext.Array.each(orders,function(order){
// //order => Order
// alert(order.num);
// })
});
});
已经解决了,直接用name()就能拿出来,注意是在hasmany里设置的name(),不是Model名()
拿出来是个Ext.data.Store
直接用Store的方法遍历就行了