用户登录
用户注册

分享至

extjs DataReader、JsonReader、XmlReader的构造方法

  • 作者: 黑人不一样的白
  • 来源: 51数据库
  • 2021-07-08
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.调用了父类构造,所以其他的跟父类一样

总结:...
软件
前端设计
程序设计
Java相关