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 相关文章推荐
jquery.validate.js插件使用经验记录
Jul 02 Javascript
Jquery对象和Dom对象的区别分析
Nov 20 Javascript
简介AngularJS中$http服务的用法
Feb 06 Javascript
jQuery中选择器的基础使用教程
May 23 Javascript
jQuery弹出层后禁用底部滚动条(移动端关闭回到原位置)
Aug 29 Javascript
JS比较两个数值的大小实例
Nov 25 Javascript
bootstrap table支持高度百分比的实例代码
Feb 28 Javascript
JS实现判断图片是否加载完成的方法分析
Jul 31 Javascript
vue实现文件上传功能
Aug 13 Javascript
在vue项目中使用Jquery-contextmenu插件的步骤讲解
Jan 27 jQuery
Node.js中文件系统fs模块的使用及常用接口
Mar 06 Javascript
three.js 利用uv和ThreeBSP制作一个快递柜功能
Aug 18 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
phpmyadmin出现Cannot start session without errors问题解决方法
2014/08/14 PHP
取得传值的函数
2006/10/27 Javascript
Flash+XML滚动新闻代码 无图片 附源码下载
2007/11/22 Javascript
ImageZoom 图片放大镜效果(多功能扩展篇)
2010/04/14 Javascript
JS 如果改变span标签的是否隐藏属性
2011/10/06 Javascript
JS验证邮箱格式是否正确的代码
2013/12/05 Javascript
JS判断客户端是手机还是PC的2个代码
2014/04/12 Javascript
javascript中for/in循环及使用技巧
2015/09/01 Javascript
浅谈String.valueOf()方法的使用
2016/06/06 Javascript
BootStrap无限级分类(无限极分类封装版)
2016/08/26 Javascript
ES6记录异步函数的执行时间详解
2016/08/31 Javascript
详解React-Todos入门例子
2016/11/08 Javascript
JavaScript运动框架 多值运动(四)
2017/05/18 Javascript
Vue中的基础过渡动画及实现原理解析
2018/12/04 Javascript
jquery实现吸顶导航效果
2020/01/08 jQuery
JavaScript实现滑块验证解锁
2021/01/07 Javascript
[01:04]DOTA2:伟大的Roshan雕塑震撼来临
2015/01/30 DOTA
在 Python 应用中使用 MongoDB的方法
2017/01/05 Python
Python 数据结构之旋转链表
2017/02/25 Python
Python中 传递值 和 传递引用 的区别解析
2018/02/22 Python
python MysqlDb模块安装及其使用详解
2018/02/23 Python
mac下pycharm设置python版本的图文教程
2018/06/13 Python
python实现汉诺塔算法
2021/03/01 Python
在matplotlib的图中设置中文标签的方法
2018/12/13 Python
Python中利用LSTM模型进行时间序列预测分析的实现
2019/07/26 Python
python字典的setdefault的巧妙用法
2019/08/07 Python
TensorFlow实现checkpoint文件转换为pb文件
2020/02/10 Python
关于工资低的辞职信
2014/01/14 职场文书
关于对大人不礼貌的检讨书
2014/09/29 职场文书
湖南省召开党的群众路线教育实践活动总结大会报告
2014/10/21 职场文书
证券区域经理岗位职责
2015/04/10 职场文书
2016大学生就业指导课心得体会
2016/01/15 职场文书
Redis 彻底禁用RDB持久化操作
2021/07/09 Redis
详解Python中__new__方法的作用
2022/03/31 Python
Golang解析JSON对象
2022/04/30 Golang
Li list-style-image 图片垂直居中实现方法
2023/05/21 HTML / CSS