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 获取标签名(tagName)示例代码
Jul 11 Javascript
js获取html文件的思路及示例
Sep 17 Javascript
js快速排序的实现代码
Dec 08 Javascript
javascript实现在某个元素上阻止鼠标右键事件的方法和实例
Aug 12 Javascript
javascript动态控制服务器控件实例
Sep 05 Javascript
PHP+mysql+Highcharts生成饼状图
May 04 Javascript
JavaScript中的boolean布尔值使用学习及相关技巧讲解
May 26 Javascript
socket.io学习教程之深入学习篇(三)
Apr 29 Javascript
js经验分享 JavaScript反调试技巧
Mar 10 Javascript
微信小程序实现指定显示行数多余文字去掉用省略号代替
Jul 25 Javascript
在vue中给列表中的奇数行添加class的实现方法
Sep 05 Javascript
vue+element实现图片上传及裁剪功能
Jun 29 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
使用 PHPMAILER 发送邮件实例应用
2012/11/07 PHP
PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
2013/06/25 PHP
php常用的url处理函数总结
2014/11/19 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
PHP isset()及empty()用法区别详解
2020/08/29 PHP
JavaScript使用IEEE 标准进行二进制浮点运算产生莫名错误的解决方法
2011/05/28 Javascript
event.X和event.clientX的区别分析
2011/10/06 Javascript
js实现图片拖动改变顺序附图
2014/05/13 Javascript
js用Date对象的setDate()函数对日期进行加减操作
2014/09/18 Javascript
Javascript中级语法快速入手
2016/07/30 Javascript
JS制作图形验证码实现代码
2020/10/19 Javascript
React学习笔记之条件渲染(一)
2017/07/02 Javascript
vue移动端轻量级的轮播组件实现代码
2018/07/12 Javascript
JavaScript面试技巧之数组的一些不low操作
2019/03/22 Javascript
基于Echarts图表在div动态切换时不显示的解决方式
2020/07/20 Javascript
python删除指定类型(或非指定)的文件实例详解
2015/07/06 Python
python中kmeans聚类实现代码
2018/02/23 Python
python实现拓扑排序的基本教程
2018/03/11 Python
完美解决Pycharm无法导入包的问题 Unresolved reference
2018/05/18 Python
Python实现K折交叉验证法的方法步骤
2019/07/11 Python
python配置文件写入过程详解
2019/10/19 Python
Python virtualenv虚拟环境实现过程解析
2020/04/18 Python
手把手教你配置JupyterLab 环境的实现
2021/02/02 Python
世界第一冲浪品牌:O’Neill
2016/08/30 全球购物
凯普林包包西班牙官网:Kipling西班牙
2019/04/12 全球购物
意大利时尚精品店:Nugnes 1920
2020/02/10 全球购物
AJAX应用和传统Web应用有什么不同
2013/08/24 面试题
化工专业个人的求职信范文
2013/11/28 职场文书
军训自我鉴定200字
2014/02/13 职场文书
初中英语课后反思
2014/04/25 职场文书
文明工地标语
2014/06/16 职场文书
2014乡镇干部纪律作风整顿思想汇报
2014/09/13 职场文书
蛋糕店创业计划书范文
2014/09/21 职场文书
小学教师节活动总结
2015/03/20 职场文书
小学庆六一主持词
2015/06/30 职场文书
HTML 里 img 元素的 src 和 srcset 属性的区别详解
2023/05/21 HTML / CSS