视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
extjsDataReader、JsonReader、XmlReader的构造方法_extjs
2020-11-27 20:45:24 责编:小采
文档


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.调用了父类构造,所以其他的跟父类一样

总结:...

下载本文
显示全文
专题