【ExtJS4.2】数据模型的相关问题

leo2115339 2013-06-03 05:03:19
数据:

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数组
...全文
56 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tick-Tock 2013-06-03
  • 打赏
  • 举报
回复

 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的方法遍历就行了
系统可作为OA、网站、电子政务、ERP、CRM、APP后台等基于B/S架构的应用软件系统的快速开发框架。 一、特色功能 1、采用Spring MVC的静态加载缓存功能,在首页将Javascript文件、CSS文件和图片等静态资源文件加载进来放进内存,极大提高ExtJS的加载速度。 2、三种皮肤主题:经典、灰色和海王星,支持多浏览器和多分辨率。 3、分别封装了模型层、控制层、业务逻辑层和数据持久层的通用操作模块,层次分明,大大减少代码冗余,二次开发效率高。 4、系统是公司多个项目的基础框架,稳定性好,支持大并发。 二、主要功能 1、采用ExtJS 4.2.1.883无限制版本,放心用于网站开发。 2、ExtJS富文本编辑器增加修改信息。 3、ExtJS的HtmlEditor的图片文件上传插件。 4、Grid列表和表单,包含添加、删除、批量删除、修改、查看、图片查看和按条件查询列表等功能。 5、导入导出Excel数据,支持xlsx和xls文件。 6、资源管理(菜单管理)。 7、用户管理和部门管理。 8、权限管理。不仅可管理各个功能模块的权限,也可以管理功能模块里的页面按钮权限。 9、报表统计。也可以嵌入其他报表工具插件。 10、采用开源的互动地图Javascript库Leaflet,处理自定义在线地图。Panel里包含2个组件,在2个组件间传递参数显示数据。 三、开发工具和采用技术 1、开发工具:Eclipse、MyEclipse和其他IDE。 2、采用Spring 3中最新最稳定的Spring MVC 3.2.8版本。 3、采用Hibernate 4.1.7。Spring MVC 3.2.8支持的最高Hibernate版本是4.1.7,更高的Hibernate版本和Spring MVC 3.2.8组合会遇到兼容问题。 4、Hibernate集成二级缓存框架Ehcache。 5、数据库是MySQL、Oracle和SQL Server,Hibernate的Dialect可使程序移植到其他数据库。 6、采用开源的互动地图Javascript库Leaflet,处理自定义在线地图。 7、采用Google Guava Collections,性能高于Apache Collections。 更多下载查看文档。
系统可作为OA、网站、电子政务、ERP、CRM、APP后台等基于B/S架构的应用软件系统的快速开发框架。 一、特色功能 1、采用Spring MVC的静态加载缓存功能,在首页将Javascript文件、CSS文件和图片等静态资源文件加载进来放进内存,极大提高ExtJS的加载速度。 2、三种皮肤主题:经典、灰色和海王星,支持多浏览器和多分辨率。 3、分别封装了模型层、控制层、业务逻辑层和数据持久层的通用操作模块,层次分明,大大减少代码冗余,二次开发效率高。 4、系统是公司多个项目的基础框架,稳定性好,支持大并发。 二、主要功能 1、采用ExtJS 4.2.1.883无限制版本,放心用于网站开发。 2、ExtJS富文本编辑器增加修改信息。 3、ExtJS的HtmlEditor的图片文件上传插件。 4、Grid列表和表单,包含添加、删除、批量删除、修改、查看、图片查看和按条件查询列表等功能。 5、导入导出Excel数据,支持xlsx和xls文件。 6、资源管理(菜单管理)。 7、用户管理和部门管理。 8、权限管理。不仅可管理各个功能模块的权限,也可以管理功能模块里的页面按钮权限。 9、报表统计。也可以嵌入其他报表工具插件。 10、采用开源的互动地图Javascript库Leaflet,处理自定义在线地图。Panel里包含2个组件,在2个组件间传递参数显示数据。 三、开发工具和采用技术 1、开发工具:Eclipse、MyEclipse和其他IDE。 2、采用Spring 3中最新最稳定的Spring MVC 3.2.8版本。 3、采用Hibernate 4.1.7。Spring MVC 3.2.8支持的最高Hibernate版本是4.1.7,更高的Hibernate版本和Spring MVC 3.2.8组合会遇到兼容问题。 4、Hibernate集成二级缓存框架Ehcache。 5、数据库是MySQL、Oracle和SQL Server,Hibernate的Dialect可使程序移植到其他数据库。 6、采用开源的互动地图Javascript库Leaflet,处理自定义在线地图。 7、采用Google Guava Collections,性能高于Apache Collections。 更多下载查看文档。

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧