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实现的激活输入框后隐藏初始内容
Jun 29 Javascript
简洁短小的 JavaScript IE 浏览器判定代码
Mar 21 Javascript
JavaScript中OnLoad几种使用方法
Dec 15 Javascript
jquery模拟SELECT下拉框取值效果
Oct 23 Javascript
网络传输协议(http协议)
Nov 18 Javascript
基于jQuery实现表格的排序
Dec 02 Javascript
JS实现的tab切换选项卡效果示例
Feb 28 Javascript
vue2笔记 — vue-router路由懒加载的实现
Mar 03 Javascript
vue中使用sessionStorage记住密码功能
Jul 24 Javascript
详解无限滚动插件vue-infinite-scroll源码解析
May 12 Javascript
vue 接口请求地址前缀本地开发和线上开发设置方式
Aug 13 Javascript
token 机制和实现方式
Dec 15 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
sql注入与转义的php函数代码
2013/06/17 PHP
PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
2014/08/18 PHP
PHP常用编译参数中文说明
2014/09/27 PHP
php获取网站百度快照日期的方法
2015/07/29 PHP
解析WordPress中函数钩子hook的作用及基本用法
2015/12/22 PHP
PHP实现的日历功能示例
2018/09/01 PHP
JavaScript对象模型-执行模型
2008/04/28 Javascript
使用jQuery的将桌面应用程序引入浏览器
2010/11/19 Javascript
jQuery实现Twitter的自动文字补齐特效
2014/11/28 Javascript
jQuery实现信息提示框(带有圆角框与动画)效果
2015/08/07 Javascript
js小数运算出现多位小数如何解决
2015/10/08 Javascript
javascript匀速运动实现方法分析
2016/01/08 Javascript
javascript类型系统_正则表达式RegExp类型详解
2016/06/24 Javascript
js面向对象实现canvas制作彩虹球喷枪效果
2016/09/24 Javascript
AngularJS入门教程之数据绑定用法示例
2016/11/01 Javascript
深入理解vue $refs的基本用法
2017/07/13 Javascript
浅谈vue路径优化之resolve
2017/10/13 Javascript
JavaScript数据结构之优先队列与循环队列实例详解
2017/10/27 Javascript
React通过父组件传递类名给子组件的实现方法
2017/11/13 Javascript
详解使用jQuery.i18n.properties实现js国际化
2018/05/04 jQuery
React router动态加载组件之适配器模式的应用详解
2018/09/12 Javascript
Vue表单绑定的实例代码(单选按钮,选择框(单选时,多选时,用 v-for 渲染的动态选项)
2019/05/13 Javascript
原理深度解析Vue的响应式更新比React快
2020/04/04 Javascript
vue prop传值类型检验方式
2020/07/30 Javascript
nuxt 路由、过渡特效、中间件的实现代码
2020/11/06 Javascript
[01:31](回顾)杀出重围,决战TI之巅
2014/07/01 DOTA
python 使用sys.stdin和fileinput读入标准输入的方法
2018/10/17 Python
对Python3 序列解包详解
2019/02/16 Python
使用python和pygame制作挡板弹球游戏
2019/12/03 Python
Python新手学习raise用法
2020/06/03 Python
求职简历的自我评价怎样写好
2013/10/07 职场文书
幼儿园老师工作总结2015
2015/05/22 职场文书
运动会三级跳加油稿
2015/07/21 职场文书
2016中秋节晚会开场白
2015/11/26 职场文书
Centos7中MySQL数据库使用mysqldump进行每日自动备份的编写
2021/08/02 MySQL
AudioContext 实现音频可视化(web技术分享)
2022/02/24 Javascript