extjs DataReader、JsonReader、XmlReader的构造方法_extjs

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

总结:...

时间: 2024-07-29 16:28:32

extjs DataReader、JsonReader、XmlReader的构造方法_extjs的相关文章

Extjs表单常见验证小结_extjs

复制代码 代码如下: //放在onReady的function(){}中 Ext.QuickTips.init(); //为组件提供提示信息功能,form的主要提示信息就是客户端验证的错误信息. Ext.form.Field.prototype.msgTarget='side'; //提示的方式,枚举值为: qtip-当鼠标移动到控件上面时显示提示; title-在浏览器的标题显示,但是测试结果是和qtip一样的; under-在控件的底下显示错误提示; side-在控件右边显示一个错误图标,鼠

Extjs学习笔记之三 extjs form更多的表单项_extjs

1.日期选择框,DateField 日期选择框在日常项目中被广泛应用,一个方便的日期输入机制能够极大的提高用户体验.Extjs的DateField非常友好灵活强大.可以通过如下代码新建一个日期选择框: 复制代码 代码如下: new Ext.form.DateField({ id: 'diliveryDate', format: 'Y年m月d日', maxValue: new Date(), minValue: '1900-01-01', disabledDays: [0, 6], disable

Extjs 几个方法的讨论_extjs

相信大家在做Extjs开发的时候都使用过类似下面的代码: 复制代码 代码如下: var form_pz = new Ext.form.FormPanel({ id: "form_pz", region: "center", labelAlign: "right", lazyRender: true, frame: true, items: [{ xtype: "combo", fieldLabel: "产品名称&qu

extjs 如何给column 加上提示_extjs

<script type="text/javascript" src="${pageContext.request.contextPath }/extjs/examples/simple-widgets/qtips.js"></script> renderer : function(value, metaData, record, rowIndex, colIndex, store) { // provide the logic depend

ExtJs使用IFrame的实现代码_extjs

环境: Microsoft Visual Studio 2008 Sp1 Asp.net MVC ExtJs 3.1.1 使用IFrame须要一个ExtJS的一个插件ManagedIFrame(miframe.js),用了这个插件可以使用 xtype:'iframepanel' 下载 代码段: 复制代码 代码如下: var p_center = new Ext.TabPanel({ region: "center", resizeTabs: true, // turn on tab r

ExtJS扩展 垂直tabLayout实现代码_extjs

但ExtJS中的TabPanel只能水平显示,搜索了一下Ext论坛,发现有垂直TabLayout的扩展,但垂直tab的页签内容是水平显示的,且页签多了之后也不能通过设置enableScroll属性使其能滚动,为了适应项目的需求,本人对TabLayout进行了扩展,使其支持垂直页签显示,支持页签很多时的滚动.效果如下: 该组件有两种使用方式,一是扩展方式,二是复写方式.其中第一种方式需要引入附件中的TabPanel.js以及ext-patch.css,同时需要将两个图片放在ext-patch.cs

Extjs实现下拉菜单效果_extjs

本文实例为大家分享了Extjs实现下拉树效果,供大家参考,具体内容如下 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>text8</title> <link rel="stylesheet" type="text/css" href="../../../ext-4.2.1/resourc

ExtJS的拖拽效果示例_extjs

复制代码 代码如下: <html> <head> <title>hello</title> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <link rel="Stylesheet" type="text/css" href="http:10.19.1.55/lib

extjs form textfield的隐藏方法_extjs

this.formpanel = new Ext.FormPanel({ items: [{ fieldLabel: '代码', name: 'FCode', anchor:'100%', id: 'fid' },{ fieldLabel: '名称', name: 'FName', anchor:'100%' // anchor width by percentage },{ xtype: 'textfield', name: 'FID', id: 'FID', hidden: true, hi