extjs DataReader、JsonReader、XmlReader的构造方法


Posted in Javascript onNovember 07, 2009

extjs3.0帮助文档:
DataReader( Object meta, Array/Object recordType )
Create a new DataReader
参数:

meta : Object
Metadata configuration options (implementation-specific).
元数据配置选项(...-...)
recordType : Array/Object
Either an Array of Field definition objects
任意一个Field定义的对象数组
which will be passed to Ext.data.Record.create,
作为对象传递给Ext.data.Record.create,
or a Record constructor created using Ext.data.Record.create.
或一个由Ext.data.Record.create创建的Record结构.
返回:
void

内部关键js代码:
Ext.data.DataReader = function(meta, recordType){
this.meta = meta;
this.recordType = Ext.isArray(recordType) ?
Ext.data.Record.create(recordType) : recordType;
this.buildExtractors();
};
...略...
rs.id = data[this.meta.idProperty];
...略...
return (data && Ext.isObject(data) &&
!Ext.isEmpty(data[this.meta.idProperty])) ? true : false;

得出结论:
a.recordType可以直接是一个Field结构的数组,由内部代码加上Ext.data.Record.create(...)。
b.recordType可以是已经加上Ext.data.Record.create(...)的Field数组。
c.meta中可以放属性:idProperty。

extjs3.0帮助文档:
XmlReader( Object meta, Object recordType )
Create a new XmlReader.
参数:
meta : Object
Metadata configuration options
recordType : Object
Either an Array of field definition objects as passed to Ext.data.Record.create,
任意一个field定义的对象数组作为参数传递给Ext.data.Record.create
or a Record constructor object created using Ext.data.Record.create.
或者一个使用Ext.data.Record.create创建的Record结构对象。
返回:
void

可以看出需要传两个obj进去,

查看内部js代码
Ext.data.JsonReader = function(meta, recordType){
//如果没有meta,那创建一个Obj给meta。
meta = meta || {};
//把idProperty等添加到meta,如果它没有这些成员。
Ext.applyIf(meta, {
idProperty: 'id',
successProperty: 'success',
totalProperty: 'total'
});
//调用父类
Ext.data.JsonReader.superclass.constructor.call(this, meta, recordType || meta.fields);
};
...略...
var sid = this.meta.idPath || this.meta.id;
var totalRecords = 0, success = true;
if(this.meta.totalRecords){
totalRecords = q.selectNumber(this.meta.totalRecords, root, 0);
}
if(this.meta.success){
var sv = q.selectValue(this.meta.success, root, true);
success = sv !== false && sv !== 'false';
}
可知:a.meta中可以有下列属性:idProperty、successProperty、totalProperty、fields、idPath、id、totalRecords、success。
b.recordType可以为空,但要在meta中写fields。
c.调用了父类构造,所以其他的跟父类一样。

extjs3.0帮助文档:
JsonReader( Object meta, Array/Object recordType )
Create a new JsonReader
Create a new JsonReader
参数:
meta : Object
Metadata configuration options.
recordType : Array/Object
Either an Array of Field definition objects
(which will be passed to Ext.data.Record.create,
or a Record constructor created from Ext.data.Record.create.
返回:
void

查看内部js代码:
Ext.data.JsonReader = function(meta, recordType){
meta = meta || {};
Ext.applyIf(meta, {
idProperty: 'id',
successProperty: 'success',
totalProperty: 'total' });
Ext.data.JsonReader.superclass.constructor.call(this, meta, recordType || meta.fields);
};
...略...
if (Ext.isEmpty(o[this.meta.root])) {
throw new Ext.data.JsonReader.Error('root-emtpy', this.meta.root);
}
else if (o[this.meta.root] === undefined) {
throw new Ext.data.JsonReader.Error('root-undefined-response', this.meta.root);
}

可知:a.meta中可以有下列属性:idProperty、successProperty、totalProperty、root、fields
b.recordType可以为空,但要在meta中写fields。
c.调用了父类构造,所以其他的跟父类一样

总结:...

Javascript 相关文章推荐
jquery等宽输出文字插件使用介绍
Sep 18 Javascript
JS实现将人民币金额转换为大写的示例代码
Feb 13 Javascript
JavaScript实现简单Tip提示框效果
Apr 20 Javascript
分享JS代码实现鼠标放在输入框上输入框和图片同时更换样式
Sep 01 Javascript
微信小程序 火车票查询实例讲解
Oct 17 Javascript
实例浅析js的this
Dec 11 Javascript
详解vue组件化开发-vuex状态管理库
Apr 10 Javascript
js实现手机web图片左右滑动效果
Dec 29 Javascript
解决vue router组件状态刷新消失的问题
Aug 01 Javascript
在Express中提供静态文件的实现方法
Oct 17 Javascript
vue实现路由懒加载的3种方法示例
Sep 01 Javascript
解决vue项目axios每次请求session不一致的问题
Oct 24 Javascript
JavaScript 变量基础知识
Nov 07 #Javascript
表格 隔行换色升级版
Nov 07 #Javascript
csdn 论坛技术区平均给分功能
Nov 07 #Javascript
在js中单选框和复选框获取值的方式
Nov 06 #Javascript
模仿JQuery sortable效果 代码有错但值得看看
Nov 05 #Javascript
javaScript parseInt字符转化为数字函数使用小结
Nov 05 #Javascript
jQuery toggle()设置CSS样式
Nov 05 #Javascript
You might like
完美解决dedecms中的[html][/html]和[code][/code]问题
2007/03/20 PHP
php引用地址改变变量值的问题
2012/03/23 PHP
PHP笔记之:基于面向对象设计的详解
2013/05/14 PHP
如何使用php判断服务器是否是HTTPS连接
2013/07/05 PHP
Win2003+apache+PHP+SqlServer2008 配置生产环境
2014/07/29 PHP
PHP中error_reporting()用法详解
2015/08/31 PHP
适用于初学者的简易PHP文件上传类
2015/10/29 PHP
PHP常用技巧汇总
2016/03/04 PHP
phpStudy 2016 使用教程详解(支持PHP7)
2017/10/18 PHP
详细解读php的命名空间(一)
2018/02/21 PHP
jQuery验证插件 Validate详解
2014/11/20 Javascript
浅谈JavaScript数据类型及转换
2015/02/28 Javascript
jQuery实现带玻璃流光质感的手风琴特效
2015/11/20 Javascript
js仿QQ中对联系人向左滑动、滑出删除按钮的操作
2016/04/07 Javascript
JS实现图片上传预览功能
2016/11/21 Javascript
Javascript之深入浅出prototype
2017/02/06 Javascript
jQuery树控件zTree使用方法详解(一)
2017/02/28 Javascript
实例分析js事件循环机制
2017/12/13 Javascript
vue input标签通用指令校验的实现
2019/11/05 Javascript
python计算列表内各元素的个数实例
2018/06/29 Python
Python根据当前日期取去年同星期日期
2019/04/14 Python
CSS3 实现发光边框特效
2020/11/11 HTML / CSS
纪伊国屋新加坡网上书店:Kinokuniya新加坡
2017/12/29 全球购物
英国排名第一的冲浪店:Ann’s Cottage
2020/06/21 全球购物
下面代码从性能上考虑,有什么问题
2015/04/03 面试题
爱情保证书范文
2014/02/01 职场文书
房地产广告词大全
2014/03/19 职场文书
领导干部廉政承诺书
2014/03/27 职场文书
公司离职证明标准样本
2014/10/05 职场文书
2015会计试用期工作总结
2014/12/12 职场文书
现实表现材料范文
2014/12/23 职场文书
乡镇科协工作总结2015
2015/05/19 职场文书
怎样写家长意见
2015/06/04 职场文书
爱国教育主题班会
2015/08/14 职场文书
python 使用tkinter与messagebox写界面和弹窗
2022/03/20 Python
分享几个简单MySQL优化小妙招
2022/03/31 MySQL