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实例教程(19) 使用HoTMetal(1)
Dec 23 Javascript
JS正则中的RegExp对象对象
Nov 07 Javascript
jQuery实现信息提示框(带有圆角框与动画)效果
Aug 07 Javascript
jQuery+CSS3实现四种应用广泛的导航条制作实例详解
Sep 17 Javascript
PHP+jquery+ajax实现分页
Dec 09 Javascript
简单实现jquery焦点图
Dec 12 Javascript
微信小程序 天气预报开发实例代码源码
Jan 20 Javascript
Angular实现搜索框及价格上下限功能
Jan 19 Javascript
vue中$nextTick的用法讲解
Jan 17 Javascript
Node.js API详解之 net模块实例分析
May 18 Javascript
Vue触发input选取文件点击事件操作
Aug 07 Javascript
JavaScript中的几种继承方法示例
Dec 06 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
overlord人气高涨,却被菲利普频繁举报,第四季很难在国内上映
2020/05/06 日漫
php 数组动态添加实现代码(最土团购系统的价格排序)
2011/12/30 PHP
PHP多进程编程实例
2014/10/15 PHP
JavaScript 判断指定字符串是否为有效数字
2010/05/11 Javascript
jQuery JSON的解析方式分享
2011/04/05 Javascript
javascript算法学习(直接插入排序)
2011/04/12 Javascript
JavaScript 继承使用分析
2011/05/12 Javascript
jQuery弹出(alert)select选择的值
2013/04/21 Javascript
js判断变量初始化的三种形式及推荐用的形式
2014/07/22 Javascript
JavaScript验证电子邮箱的函数
2014/08/22 Javascript
javascript实现滚动效果的数字时钟实例
2016/07/21 Javascript
Javascript的比较汇总
2016/07/25 Javascript
JavaScript中子对象访问父对象的方式详解
2016/09/01 Javascript
把json格式的字符串转换成javascript对象或数组的方法总结
2016/11/03 Javascript
JS字符串常用操作方法实例小结
2019/06/24 Javascript
Layui带搜索的下拉框的使用以及动态数据绑定方法
2019/09/28 Javascript
Vue Router 实现动态路由和常见问题及解决方法
2020/03/06 Javascript
微信小程序实现列表的横向滑动方式
2020/07/15 Javascript
Vant Weapp组件踩坑:picker的初始赋值解决
2020/11/12 Javascript
使用Python编写简单的端口扫描器的实例分享
2015/12/18 Python
深入理解python中的atexit模块
2017/03/07 Python
python executemany的使用及注意事项
2017/03/13 Python
Python设计模式之模板方法模式实例详解
2019/01/17 Python
Django如何防止定时任务并发浅析
2019/05/14 Python
Python中内建模块collections如何使用
2020/05/27 Python
pycharm 2020.2.4 pip install Flask 报错 Error:Non-zero exit code的问题
2020/12/04 Python
html5 canvas实现给图片添加平铺水印
2019/08/20 HTML / CSS
中软国际Java程序员机试题
2012/08/19 面试题
建筑总经理岗位职责
2014/02/02 职场文书
自强之星事迹材料
2014/05/12 职场文书
领导参观欢迎词
2015/01/26 职场文书
肖申克救赎观后感
2015/06/02 职场文书
2015年物业公司保洁工作总结
2015/10/22 职场文书
vue中data改变后让视图同步更新的方法
2021/03/29 Vue.js
MYSQL优化之数据表碎片整理详解
2022/04/03 MySQL
Redis 限流器
2022/05/15 Redis