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中读取json文件示例代码
May 10 Javascript
js 输出内容到新窗口具体实现代码
May 31 Javascript
浅析Javascript中“==”与“===”的区别
Dec 23 Javascript
js父页面中使用子页面的方法
Jan 09 Javascript
理解javascript对象继承
Apr 17 Javascript
jQuery 监控键盘一段时间没输入
Apr 22 Javascript
JavaScript创建对象的七种方式全面总结
Aug 21 Javascript
JS基于正则表达式实现的密码强度验证功能示例
Sep 21 Javascript
vue2中使用less简易教程
Mar 27 Javascript
通过vue提供的keep-alive减少对服务器的请求次数
Apr 01 Javascript
vue里面v-bind和Props 利用props绑定动态数据的方法
Aug 27 Javascript
react native 仿微信聊天室实例代码
Sep 17 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输入流php://input介绍
2012/09/18 PHP
深入理解:单一入口、MVC、ORM、CURD、ActiveRecord概念
2013/06/06 PHP
PHP实现的无限分类类库定义与用法示例【基于thinkPHP】
2018/08/06 PHP
laravel excel 上传文件保存到本地服务器功能
2019/11/14 PHP
JS中彻底删除JSON对象组成的数组中的元素
2020/09/22 PHP
用js来刷新当前页面保留参数的具体实现
2013/12/23 Javascript
javascript对中文按照拼音排序代码
2014/08/20 Javascript
JS 获取鼠标左右键的键值方法
2014/10/11 Javascript
js简单实现竖向tab选项卡的方法
2015/05/04 Javascript
js实现文字在按钮上滚动的方法
2015/08/20 Javascript
第八篇Bootstrap下拉菜单实例代码
2016/06/21 Javascript
onmouseover事件和onmouseout事件全面理解
2016/08/15 Javascript
jQuery实用小技巧_输入框文字获取和失去焦点的简单实例
2016/08/25 Javascript
微信小程序  action-sheet详解及实例代码
2016/11/09 Javascript
JS实现为动态添加的元素增加事件功能示例【基于事件委托】
2018/03/21 Javascript
javascript数据结构之多叉树经典操作示例【创建、添加、遍历、移除等】
2018/08/01 Javascript
JavaScript实现的DOM绘制柱状图效果示例
2018/08/08 Javascript
解决VUE中document.body.scrollTop为0的问题
2018/09/15 Javascript
Vue动态组件和异步组件原理详解
2019/05/06 Javascript
JavaScript遍历查找数组中最大值与最小值的方法示例
2019/05/24 Javascript
JS+canvas五子棋人机对战实现步骤详解
2020/06/04 Javascript
numpy下的flatten()函数用法详解
2019/05/27 Python
Python内置数据类型list各方法的性能测试过程解析
2020/01/07 Python
python设置环境变量的作用整理
2020/02/17 Python
Java Unsafe类实现原理及测试代码
2020/09/15 Python
python实现定时发送邮件到指定邮箱
2020/12/23 Python
详解CSS 3 中的 calc() 方法
2018/01/12 HTML / CSS
HTML5 Canvas图像模糊完美解决办法
2018/02/06 HTML / CSS
美国体育用品在线:Modell’s Sporting Goods
2018/06/07 全球购物
四年级下册教学反思
2014/02/01 职场文书
新农村建设典型材料
2014/05/31 职场文书
2015年五四青年节活动总结
2015/02/10 职场文书
会计主管岗位职责
2015/04/02 职场文书
大学生实习介绍信
2015/05/05 职场文书
检讨书模板大全
2015/05/07 职场文书
基层医务人员三严三实心得体会
2016/01/05 职场文书