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 相关文章推荐
封装好的省市地区联动控件附下载
Aug 13 Javascript
纯JavaScript实现的完美渐变弹出层效果代码
Apr 02 Javascript
HTML Dom与Css控制方法
Oct 25 Javascript
jquery命令汇总,方便使用jquery的朋友
Jun 26 Javascript
js实现页面跳转的五种方法推荐
Mar 10 Javascript
IScroll5 中文API参数说明和调用方法
May 21 Javascript
JavaScript兼容性总结之获取非行间样式案例
Aug 07 Javascript
jquery实现表单获取短信验证码代码
Mar 13 Javascript
vuex的简单使用教程
Feb 02 Javascript
微信小程序实现图片压缩
Dec 03 Javascript
javascript设计模式 ? 迭代器模式原理与用法实例分析
Apr 17 Javascript
使用React代码动态生成栅格布局的方法
May 24 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中的观察者模式简单实例
2015/01/20 PHP
PHP+shell脚本操作Memcached和Apache Status的实例分享
2016/03/11 PHP
php实现的debug log日志操作类实例
2016/07/12 PHP
laravel 判断查询数据库返回值的例子
2019/10/11 PHP
JS 遮照层实现代码
2010/03/31 Javascript
jquery 新浪网易的评论块制作
2010/07/01 Javascript
验证码按回车不变解决方法
2013/03/29 Javascript
javascript unicode与GBK2312(中文)编码转换方法
2013/11/14 Javascript
JS扩展方法实例分析
2015/04/15 Javascript
jquery实现的用户注册表单提示操作效果代码分享
2015/08/28 Javascript
JS实现合并两个数组并去除重复项只留一个的方法
2015/12/17 Javascript
AngularJS进行性能调优的7个建议
2015/12/28 Javascript
javascript获取select标签选中的值
2016/06/04 Javascript
完美JQuery图片切换效果的简单实现
2016/07/21 Javascript
jQuery事件处理的特征(事件命名机制)
2016/08/23 Javascript
layer.open 按钮的点击事件关闭方法
2018/08/17 Javascript
Vue编写可显示周和月模式的日历 Vue自定义日历内容的显示
2019/06/26 Javascript
nodejs制作小爬虫功能示例
2020/02/24 NodeJs
JS获取一个字符串中指定字符串第n次出现的位置
2021/02/10 Javascript
浅谈Python 的枚举 Enum
2017/06/12 Python
pygame游戏之旅 游戏中添加显示文字
2018/11/20 Python
python调用matlab的m自定义函数方法
2019/02/18 Python
Python3.5装饰器原理及应用实例详解
2019/04/30 Python
Python产生一个数值范围内的不重复的随机数的实现方法
2019/08/21 Python
python网络编程 使用UDP、TCP协议收发信息详解
2019/08/29 Python
pytorch数据预处理错误的解决
2020/02/20 Python
jupyter notebook tensorflow打印device信息实例
2020/04/20 Python
外语专业毕业生自荐信
2014/04/14 职场文书
投标诚信承诺书
2014/05/26 职场文书
贷款担保书
2015/01/20 职场文书
民间借贷纠纷案件代理词
2015/05/26 职场文书
烈士陵园观后感
2015/06/08 职场文书
李强优秀员工观后感
2015/06/16 职场文书
毕业酒会致辞
2015/07/29 职场文书
新兵入伍决心书
2015/09/22 职场文书
html原生table实现合并单元格以及合并表头的示例代码
2023/05/07 HTML / CSS