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 相关文章推荐
textarea的value是html文件源代码,存成html文件的代码
Apr 20 Javascript
jQuery库与其他JS库冲突的解决办法
Feb 07 Javascript
玩转jQuery按钮 请告诉我你最喜欢哪些?
Jan 08 Javascript
jQuery中fadeOut()方法用法实例
Dec 24 Javascript
7个让JavaScript变得更好的注意事项
Jan 28 Javascript
JavaScript中创建字典对象(dictionary)实例
Mar 31 Javascript
Bootstrap进度条组件知识详解
May 01 Javascript
浅谈jquery设置和获得checkbox选中的问题
Aug 19 Javascript
ionic实现底部分享功能
May 11 Javascript
seaJs使用心得之exports与module.exports的区别实例分析
Oct 13 Javascript
js技巧之十几行的代码实现vue.watch代码
Jun 09 Javascript
layui实现数据表格自定义数据项
Oct 26 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
印尼林东PWN黄金曼特宁咖啡豆:怎么冲世界上最醇厚的咖啡冲煮教程
2021/03/03 冲泡冲煮
php数组的一些常见操作汇总
2011/07/17 PHP
php 抽象类的简单应用
2011/09/06 PHP
php线性表顺序存储实现代码(增删查改)
2012/02/16 PHP
数组与类使用PHP的可变变量名需要的注意的问题
2013/06/20 PHP
php 数组元素快速去重
2017/05/05 PHP
Ext 表单布局实例代码
2009/04/30 Javascript
Javascript 判断是否存在函数的方法
2013/01/03 Javascript
浅析jQuery中常用的元素查找方法总结
2013/07/04 Javascript
jquery实现按Enter键触发事件示例
2013/09/10 Javascript
将input file的选择的文件清空的两种解决方案
2013/10/21 Javascript
取消选中单选框radio的三种方式示例介绍
2013/12/23 Javascript
jquery使用$(element).is()来判断获取的tagName
2014/08/24 Javascript
node.js中的fs.createWriteStream方法使用说明
2014/12/17 Javascript
jQuery选择器用法实例详解
2015/12/17 Javascript
JavaScript操作表单实例讲解(上)
2016/06/20 Javascript
EasyUI创建对话框的两种方式
2016/08/23 Javascript
文件上传的几个示例分享【推荐】
2016/12/16 Javascript
浅谈JavaScript的计时器对象
2016/12/26 Javascript
Angular4 中内置指令的基本用法
2017/07/31 Javascript
JS解析url查询参数的简单代码
2017/08/06 Javascript
Layui组件Table绑定行点击事件和获取行数据的方法
2018/08/19 Javascript
详解React 的几种条件渲染以及选择
2018/10/23 Javascript
微信小程序class封装http代码实例
2019/08/24 Javascript
vue-router之实现导航切换过渡动画效果
2019/10/31 Javascript
基于javascript实现贪吃蛇小游戏
2019/11/25 Javascript
Tensorflow 实现将图像与标签数据转化为tfRecord文件
2020/02/17 Python
最新Python idle下载、安装与使用教程图文详解
2020/11/28 Python
业务经理岗位职责
2013/11/11 职场文书
高三学习决心书
2014/03/11 职场文书
公务员年度考核登记表个人总结
2015/02/12 职场文书
在校证明模板
2015/06/17 职场文书
用Python制作灯光秀短视频的思路详解
2021/04/13 Python
教你怎么用Python处理excel实现自动化办公
2021/04/30 Python
Nginx stream 配置代理(Nginx TCP/UDP 负载均衡)
2021/11/17 Servers
Nginx 502 bad gateway错误解决的九种方案及原因
2022/08/14 Servers