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 绑定select标签的onchange事件,弹出选择的值,并实现跳转、传参
Jan 06 Javascript
JS target与currentTarget区别说明
Aug 28 Javascript
使用console进行性能测试
Apr 27 Javascript
ui组件之input多选下拉实现方法(带有搜索功能)
Jul 14 Javascript
浅谈toLowerCase和toLocaleLowerCase的区别
Aug 15 Javascript
js/jq仿window文件夹移动/剪切/复制等操作代码
Mar 08 Javascript
详解vue+vueRouter+webpack的简单实例
Jun 17 Javascript
让网站自动生成章节目录索引的多个js代码
Jan 07 Javascript
浅谈React Native 传参的几种方式(小结)
May 21 Javascript
基于JavaScript获取url参数2种方法
Apr 17 Javascript
JS this关键字在ajax中使用出现问题解决方案
Jul 17 Javascript
浅谈vue中$bus的使用和涉及到的问题
Jul 28 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
php中模拟POST传递数据的两种方法分享
2011/09/16 PHP
PHP多维数组排序array详解
2017/11/21 PHP
让插入到 innerHTML 中的 script 跑起来的实现代码
2006/07/01 Javascript
jquery 简短右键菜单 多浏览器兼容
2010/01/01 Javascript
基于jQuery的获得各种控件Value的方法
2010/11/19 Javascript
javascript实现鼠标放上后下边对应内容变换的效果
2015/08/06 Javascript
初识angular框架后的所思所想
2016/02/19 Javascript
jQuery animate和CSS3相结合实现缓动追逐效果附源码下载
2016/04/18 Javascript
D3.js实现折线图的方法详解
2016/09/21 Javascript
用headjs来管理和加载js 提高网站加载速度
2016/11/29 Javascript
详解webpack4多入口、多页面项目构建案例
2018/05/25 Javascript
基于vue循环列表时点击跳转页面的方法
2018/08/31 Javascript
js实现轮播图效果 纯js实现图片自动切换
2020/08/09 Javascript
微信小程序学习之自定义滚动弹窗
2020/12/20 Javascript
[00:43]DOTA2小紫本全民票选福利PA至宝全方位展示
2014/11/25 DOTA
python标准日志模块logging的使用方法
2013/11/01 Python
使用Python获取CPU、内存和硬盘等windowns系统信息的2个例子
2014/04/15 Python
推荐11个实用Python库
2015/01/23 Python
python使用Image处理图片常用技巧分析
2015/06/01 Python
Python设计模式之策略模式实例详解
2019/01/21 Python
python dlib人脸识别代码实例
2019/04/04 Python
使用Python实现企业微信的自动打卡功能
2019/04/30 Python
使用Python实现毫秒级抢单功能
2019/06/06 Python
pd.DataFrame统计各列数值多少的实例
2019/12/05 Python
Pandas将列表(List)转换为数据框(Dataframe)
2020/04/24 Python
使用bandit对目标python代码进行安全函数扫描的案例分析
2021/01/27 Python
英国Office鞋店德国网站:在线购买鞋子、靴子和运动鞋
2018/12/19 全球购物
澳洲本土太阳镜品牌:Quay Australia
2019/07/29 全球购物
美国购买体育、音乐会和剧院门票网站:SelectATicket
2019/09/08 全球购物
幼儿园户外活动总结
2014/07/04 职场文书
出售房屋协议书范本
2014/10/06 职场文书
骨干教师考核评语
2014/12/31 职场文书
赢在中国观后感
2015/06/02 职场文书
30岁前绝不能错过的10本书
2019/08/08 职场文书
教师节作文之小学四年级
2019/09/03 职场文书
盘点2020年适合农村地区创业的项目
2019/10/16 职场文书