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 相关文章推荐
Opacity.js
Jan 22 Javascript
这些年、我收集的JQuery代码小结
Aug 01 Javascript
将字符串转换成gb2312或者utf-8编码的参数(js版)
Apr 10 Javascript
深入理解javascript中defer的作用
Dec 11 Javascript
Node.js编码规范
Jul 14 Javascript
分享20个提升网站界面体验的jQuery插件
Dec 15 Javascript
js数组常用操作方法小结(增加,删除,合并,分割等)
Aug 02 Javascript
使用vue.js实现联动效果的示例代码
Jan 10 Javascript
微信小程序 子级页面返回父级并把子级参数带回父级实现方法
Aug 22 Javascript
基于html+css+js实现简易计算器代码实例
Feb 28 Javascript
jQuery HTML获取内容和属性操作实例分析
May 20 jQuery
原生JS封装拖动验证滑块的实现代码示例
Jun 01 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 explode()函数用法、切分字符串
2012/10/03 PHP
php语言的7种基本的排序方法
2020/12/28 PHP
tp5框架基于ajax实现异步删除图片的方法示例
2020/02/10 PHP
utf8的编码算法 转载
2006/12/27 Javascript
div层的移动及性能优化
2010/11/16 Javascript
js+css实现增加表单可用性之提示文字
2013/06/03 Javascript
一个简单的jquery进度条示例
2014/04/28 Javascript
jquery attr方法获取input的checked属性问题
2014/05/26 Javascript
javascript+ajax实现产品页面加载信息
2015/07/09 Javascript
深入了解JavaScript中的Symbol的使用方法
2015/07/28 Javascript
超精准的javascript验证身份证号的具体实现方法
2015/11/18 Javascript
Jquery基础之事件操作详解
2016/06/14 Javascript
javascript实现将数字转成千分位的方法小结【5种方式】
2016/12/11 Javascript
JavaScript获取select中text值的方法
2017/02/13 Javascript
vue.js数据绑定的方法(单向、双向和一次性绑定)
2017/07/13 Javascript
H5基于iScroll实现下拉刷新和上拉加载更多
2017/07/18 Javascript
在Vue methods中调用filters里的过滤器实例
2018/08/30 Javascript
在element-ui的select下拉框加上滚动加载
2019/04/18 Javascript
Vue data的数据响应式到底是如何实现的
2020/02/11 Javascript
[04:04]显微镜下的DOTA2第六期——电影级别的华丽团战
2014/06/20 DOTA
在Django同1个页面中的多表单处理详解
2017/01/25 Python
老生常谈Python startswith()函数与endswith函数
2017/09/08 Python
Python3.x爬虫下载网页图片的实例讲解
2018/05/22 Python
python3正则提取字符串里的中文实例
2019/01/31 Python
Python实现通过解析域名获取ip地址的方法分析
2019/05/17 Python
python代码实现将列表中重复元素之间的内容全部滤除
2020/05/22 Python
CSS3图片旋转特效(360/60/-360度)
2013/10/10 HTML / CSS
伦敦的高级牛仔布专家:Trilogy
2018/08/06 全球购物
OnePlus加拿大官网:中国国际化手机品牌
2020/10/13 全球购物
Shell如何接收变量输入
2012/09/24 面试题
祖国在我心中的演讲稿
2014/05/04 职场文书
用人单位聘用意向书
2015/05/11 职场文书
2015年留守儿童工作总结
2015/05/22 职场文书
2015年保险公司内勤工作总结
2015/05/23 职场文书
2015年学校政教工作总结
2015/07/20 职场文书
标准演讲稿格式结尾应该怎么书写?
2019/07/17 职场文书