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 个人笔记(没有整理,很乱)
Jul 07 Javascript
优化 JavaScript 代码的方法小结
Jul 16 Javascript
js 浏览器事件介绍
Mar 30 Javascript
通过jQuery源码学习javascript(三)
Dec 27 Javascript
js中将String转换为number以便比较
Jul 08 Javascript
BOM系列第三篇之定时器应用(时钟、倒计时、秒表和闹钟)
Aug 17 Javascript
Javascript实现一个简单的输入关键字添加标签效果实例
Jun 01 Javascript
JS实现的贪吃蛇游戏案例详解
May 01 Javascript
layui实现数据表格table分页功能(ajax异步)
Jul 27 Javascript
ES6 新增的创建数组的方法(小结)
Aug 01 Javascript
Bootstrap table 服务器端分页功能实现方法示例
Jun 01 Javascript
javascript实现数字时钟效果
Feb 06 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
2020年4月放送决定!第2期TV动画《邪神酱飞踢》视觉图&主题曲情报公开!
2020/03/06 日漫
一些PHP写的小东西
2006/12/06 PHP
深入for,while,foreach遍历时间比较的详解
2013/06/08 PHP
常用简易JavaScript函数
2009/04/09 Javascript
javascript判断用户浏览器插件安装情况的代码
2011/01/01 Javascript
鼠标事件延时切换插件
2011/03/12 Javascript
jQuery下通过$.browser来判断浏览器.
2011/04/05 Javascript
基于jQuery的星级评分插件
2011/08/12 Javascript
JS+flash实现chrome和ie浏览器下同时可以复制粘贴
2013/09/22 Javascript
用javascript删除当前行,添加行(示例代码)
2013/11/25 Javascript
JQuery页面的表格数据的增加与分页的实现
2013/12/10 Javascript
浅析javascript中function 的 length 属性
2014/05/27 Javascript
node.js中的fs.lchownSync方法使用说明
2014/12/16 Javascript
javascript内置对象操作详解
2015/02/04 Javascript
jQuery实现图片与文字描述左右滑动自动切换的方法
2015/07/27 Javascript
详解JavaScript的Date对象(制作简易钟表)
2020/04/07 Javascript
Node.js操作Firebird数据库教程
2016/03/04 Javascript
jQuery实现的兼容性浮动层示例
2016/08/02 Javascript
js使用Replace结合正则替换重复出现的字符串功能示例
2016/12/27 Javascript
微信小程序开发教程-手势解锁实例
2017/01/06 Javascript
微信小程序 详解Page中data数据操作和函数调用
2017/01/12 Javascript
babel基本使用详解
2017/02/17 Javascript
微信小程序 首页制作简单实例
2017/04/07 Javascript
VuePress 静态网站生成方法步骤
2019/02/14 Javascript
js实现点击上传图片并设为模糊背景
2020/08/02 Javascript
[56:17]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第三场 8.22
2019/09/05 DOTA
python中 ? : 三元表达式的使用介绍
2013/10/09 Python
python模拟登录百度代码分享(获取百度贴吧等级)
2013/12/27 Python
python urllib urlopen()对象方法/代理的补充说明
2017/06/29 Python
Python搭建FTP服务器的方法示例
2018/01/19 Python
Pyqt实现无边框窗口拖动以及窗口大小改变
2018/04/19 Python
Django实现表单验证
2018/09/08 Python
利用css3制作3D样式按钮实现代码
2013/03/18 HTML / CSS
英国著名药妆店:Superdrug
2021/02/13 全球购物
退税申请报告怎么写
2015/05/18 职场文书
2019企业文化管理制度范本!
2019/08/06 职场文书