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 document.images实例
May 27 Javascript
jquery 面包屑导航 具体实现
Jun 05 Javascript
js中的屏蔽的使用示例
Jul 30 Javascript
jQuery搜索同辈元素方法
Feb 10 Javascript
Jquery修改image的src属性,图片不加载问题的解决方法
May 17 Javascript
jQuery实现弹窗居中效果类似alert()
Feb 27 Javascript
jQuery位置选择器用法实例分析
Jun 28 jQuery
Vue使用lodop实现打印小结
Jul 06 Javascript
利用不到200行代码写一款属于你自己的js类库
Jul 08 Javascript
javascript-hashchange事件和历史状态管理实例分析
Apr 18 Javascript
使用element-ui +Vue 解决 table 里包含表单验证的问题
Jul 17 Javascript
原生JS实现拖拽效果
Dec 04 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
基于wordpress主题制作的具体实现步骤
2013/05/10 PHP
PHP实现定时执行任务的方法
2014/10/05 PHP
php实现用于验证所有类型的信用卡类
2015/03/24 PHP
Laravel框架实现定时发布任务的方法
2018/08/16 PHP
PHP实现的简单留言板功能示例【基于thinkPHP框架】
2018/12/07 PHP
Jquery 一次处理多个ajax请求的代码
2011/09/02 Javascript
Extjs4 消息框去掉关闭按钮(类似Ext.Msg.alert)
2013/04/02 Javascript
node.js微信公众平台开发教程
2016/03/04 Javascript
深入浅析JavaScript中的constructor
2016/04/19 Javascript
点击按钮出现60秒倒计时的简单js代码(推荐)
2016/06/07 Javascript
javascript日期比较方法实例分析
2016/06/17 Javascript
JS时间控制实现动态效果的实例讲解
2017/07/31 Javascript
jQuery选择器之层次选择器用法实例分析
2019/02/19 jQuery
elementUI多选框反选的实现代码
2019/04/03 Javascript
JavaScript修改注册表实例代码
2020/01/05 Javascript
Node使用Nodemailer发送邮件的方法实现
2020/02/24 Javascript
JavaScript中while循环的基础使用教程
2020/08/11 Javascript
简介Python设计模式中的代理模式与模板方法模式编程
2016/02/02 Python
Python中反射和描述器总结
2018/09/23 Python
使用Flask-Cache缓存实现给Flask提速的方法详解
2019/06/11 Python
python tkinter实现界面切换的示例代码
2019/06/14 Python
用python写PDF转换器的实现
2020/10/29 Python
Python eval函数原理及用法解析
2020/11/14 Python
Django利用elasticsearch(搜索引擎)实现搜索功能
2020/11/26 Python
家得宝墨西哥官网:The Home Depot墨西哥
2019/11/18 全球购物
培训心得体会
2013/12/29 职场文书
编辑找工作求职信分享
2014/01/03 职场文书
绩效管理实施方案
2014/03/19 职场文书
课内比教学心得体会
2014/09/09 职场文书
2014年十一国庆节爱国演讲稿
2014/09/23 职场文书
2014年卫生工作总结
2014/11/27 职场文书
教师工作表现评语
2014/12/31 职场文书
党员转正介绍人意见
2015/06/03 职场文书
学校运动会简讯
2015/07/20 职场文书
《比的意义》教学反思
2016/02/18 职场文书
2019如何书写演讲稿?
2019/07/01 职场文书