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.调用了父类构造,所以其他的跟父类一样 
总结:...
您可能感兴趣的文章:
