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 相关文章推荐
用js实现键盘方向键翻页功能的代码
Jun 03 Javascript
Json字符串转换为JS对象的高效方法实例
May 01 Javascript
js实现身份证号码验证的简单实例
Feb 19 Javascript
js中把JSON字符串转换成JSON对象最好的方法
Mar 21 Javascript
jQuery ui实现动感的圆角渐变网站导航菜单效果代码
Aug 26 Javascript
Javascript实现的简单右键菜单类
Sep 23 Javascript
JavaScript实现垂直滚动条效果
Jan 18 Javascript
JavaScript错误处理和堆栈追踪详解
Apr 18 Javascript
Angular搜索 过滤 批量删除 添加 表单验证功能集锦(实例代码)
Oct 25 Javascript
微信小程序checkbox组件使用详解
Jan 31 Javascript
jQuery实现轮播图源码
Oct 23 jQuery
JS实现简易日历效果
Jan 25 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
在windows平台上构建自己的PHP实现方法(仅适用于php5.2)
2013/07/05 PHP
ThinkPHP分页类使用详解
2014/03/05 PHP
php输出含有“#”字符串的方法
2017/01/18 PHP
浅谈关于PHP解决图片无损压缩的问题
2017/09/01 PHP
jquery中EasyUI使用技巧小结
2015/02/10 Javascript
深入分析Javascript跨域问题
2015/04/17 Javascript
分享两款带遮罩的jQuery弹出框
2015/12/30 Javascript
webpack打包单页面如何引用的js
2017/06/07 Javascript
基于Vue实现后台系统权限控制的示例代码
2017/08/29 Javascript
JS 仿支付宝input文本输入框放大组件的实例
2017/11/14 Javascript
vue 国际化 vue-i18n 双语言 语言包
2018/06/07 Javascript
JavaScript常见事件对象与操作实例总结
2019/01/05 Javascript
nuxt框架中对vuex进行模块化设置的实现方法
2019/09/06 Javascript
Vue解析带html标签的字符串为dom的实例
2019/11/13 Javascript
小程序按钮避免多次调用接口和点击方案实现(不用showLoading)
2020/04/15 Javascript
js实现贪吃蛇游戏(简易版)
2020/09/29 Javascript
400多行Python代码实现了一个FTP服务器
2012/05/10 Python
python3访问sina首页中文的处理方法
2014/02/24 Python
python2.7使用plotly绘制本地散点图和折线图
2019/04/02 Python
机器学习实战之knn算法pandas
2019/06/22 Python
Python 调用 Outlook 发送邮件过程解析
2019/08/08 Python
Flask之pipenv虚拟环境的实现
2019/11/26 Python
修改Pandas的行或列的名字(重命名)
2019/12/18 Python
python基于event实现线程间通信控制
2020/01/13 Python
Python新手学习函数默认参数设置
2020/06/03 Python
html5 touch事件实现触屏页面上下滑动(二)
2016/03/10 HTML / CSS
使用HTML和CSS实现的标签云效果(附demo)
2021/02/03 HTML / CSS
美国50岁以上单身人士约会平台:SilverSingles
2018/06/29 全球购物
办理房产过户的委托书
2014/09/14 职场文书
大学生党员自我批评思想汇报
2014/10/10 职场文书
2014年秘书工作总结
2014/11/25 职场文书
2015年商场工作总结
2015/04/27 职场文书
消防安全主题班会
2015/08/12 职场文书
2016年最美孝心少年事迹材料
2016/02/26 职场文书
六种css3实现的边框过渡效果
2021/04/22 HTML / CSS
Javascript使用integrity属性进行安全验证
2021/11/07 Javascript