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 相关文章推荐
推荐一些非常不错的javascript学习资源站点
Aug 29 Javascript
Javascript 原型和继承(Prototypes and Inheritance)
Apr 01 Javascript
IE8 下的Js错误HTML Parsing Error...
Aug 14 Javascript
cnblogs csdn 代码运行框实现代码
Nov 02 Javascript
javascript基础知识大集锦(一) 推荐收藏
Jan 13 Javascript
jquery Ajax 实现加载数据前动画效果的示例代码
Feb 07 Javascript
微信小程序 自己制作小组件实例详解
Dec 22 Javascript
基于layui数据表格以及传数据的方式
Aug 19 Javascript
vue实现在一个方法执行完后执行另一个方法的示例
Aug 25 Javascript
理顺8个版本vue的区别(小结)
Sep 17 Javascript
微信小程序实现笑脸评分功能
Nov 03 Javascript
vue实现公告栏文字上下滚动效果的示例代码
Jun 16 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
Linux下 php5 MySQL5 Apache2 phpMyAdmin ZendOptimizer安装与配置[图文]
2008/11/18 PHP
php checkbox复选框值的获取与checkbox默认值输出方法
2010/05/15 PHP
PHP中使用OpenSSL生成证书及加密解密
2017/02/05 PHP
Laravel 验证码认证学习记录小结
2019/12/20 PHP
php加速缓存器opcache,apc,xcache,eAccelerator原理与配置方法实例分析
2020/03/02 PHP
分享XmlHttpRequest调用Webservice的一点心得
2012/07/20 Javascript
Javascript中 关于prototype属性实现继承的原理图
2013/04/16 Javascript
基于jQuery.Validate验证库知识点的详解
2013/04/26 Javascript
javascript实现在某个元素上阻止鼠标右键事件的方法和实例
2014/08/12 Javascript
jquery+html仿翻页相册功能
2016/12/20 Javascript
JavaScript获取中英文混合字符串长度的方法示例
2017/02/04 Javascript
jquery uploadify隐藏上传进度的实现方法
2017/02/06 Javascript
node中间层实现文件上传功能
2018/06/11 Javascript
微信小程序实现带参数的分享功能(两种方法)
2019/05/17 Javascript
使用FastCGI部署Python的Django应用的教程
2015/07/22 Python
Python实现读取文件最后n行的方法
2017/02/23 Python
python爬虫入门教程--正则表达式完全指南(五)
2017/05/25 Python
Python文件操作基本流程代码实例
2017/12/11 Python
python简易远程控制单线程版
2018/06/20 Python
python tkinter图形界面代码统计工具
2019/09/18 Python
Python中顺序表原理与实现方法详解
2019/12/03 Python
如何基于Python实现自动扫雷
2020/01/06 Python
怎么快速自学python
2020/06/22 Python
Lookfantastic日本官网:英国知名护肤、化妆品和头发护理购物网站
2018/04/21 全球购物
SQL Server面试题
2016/10/17 面试题
Java中的类包括什么内容?设计时要注意哪些方面
2012/05/23 面试题
渔夫的故事教学反思
2014/02/14 职场文书
幼儿园儿童节主持词
2014/03/21 职场文书
社区平安建设方案
2014/05/25 职场文书
新闻编辑求职信
2014/07/13 职场文书
推普周活动总结
2014/08/28 职场文书
公司财务会计主管应聘求职信
2014/09/26 职场文书
捐助倡议书
2015/01/19 职场文书
Python中json.dumps()函数的使用解析
2021/05/17 Python
灵能百分百第三季什么时候来?
2022/03/15 日漫
Python实现为PDF去除水印的示例代码
2022/04/03 Python