Chinaunix首页 | 论坛 | 博客
  • 博客访问: 545853
  • 博文数量: 136
  • 博客积分: 4010
  • 博客等级: 上校
  • 技术积分: 1343
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-19 23:18
文章分类

全部博文(136)

文章存档

2011年(28)

2009年(60)

2008年(48)

我的朋友

分类: Java

2011-05-18 10:58:15

序言
根据我在论坛上的观察,用起来的时候疑惑会比较多。甚至有些人根本忽略,或者不清楚它是什么。所以我决定阐述一下这个的概念。
定义
xtype就是一个代表类(Class)的标识名字。
譬如,你有这个类,名字是Ext.ux.MyGrid。正常情况下你需要用这个名字来实例化这个类(创建类的对象)。
除了类名外,你还可以这样登记类的xtype:
Ext.reg(‘mygrid’, Ext.ux.MyGrid);
其中xtype 是 mygrid 而类名的一般形式是Ext.ux.MyGrid。上面的语句登记了新的xtype,换种说法说,xtype mygrid 与类 Ext.ux.MyGrid是连在一起的。
到底有什么好处?
试想一下,你手头上的是一个大型的项目,为了响应用户的操作,程序里面包含者大量的对象(windows、forms、grids)。用户点击图标或按钮,就会新建一个窗体,窗体里面又有grid,最终在屏幕上渲染出来。
嗯,我们回到Ext2.x之前的编码,那时候我们实例化所有对象是页面第一次加载后就进行的(程序代码第一次的运行)。在客户端内存中,Ext.ux.MyGrid类的对象已经存在,等待用户的点击。 同样是这个grid,假设你上百个的实例,…是多么浪费宝贵的资源啊!很多grid其实用户未必会点击让它出现。
延时实例化
如果你使用xtype,那么在内存中的仅仅是一个配置项对象,像:

       1:  {xtype:'mygrid", border:false, width:600, height:400, ...} 

消耗没有复杂的实例对象来得大。

嗯,用户点击按钮或图标会怎么样呢?Ext会辨认出它是一个准备要渲染的grid但不立刻实例化,Ext在ComponentMgr的帮忙下明白这么一回事:“如果我要实例化xtype mygrid的对象,我就知道要创建的实际是类Ext.ux.MyGrid的对象”。即如下列代码:

   1:  create : function(config, defaultType){  
   2:      return new types[config.xtype || defaultType](config);  
   3:  }  

等价于:

   1:  return new Ext.ux.MyGrid(config);  

然后实例化grid,进行渲染和显示。谨记:需要的时候才实例化

 

xtype            Class

————-    ——————

box              Ext.BoxComponent 具有边框属性的组件

button           Ext.Button 按钮

colorpalette     Ext.ColorPalette 调色板

component        Ext.Component 组件

container        Ext.Container 容器

cycle            Ext.CycleButton

dataview         Ext.DataView 数据显示视图

datepicker       Ext.DatePicker 日期选择面板

editor           Ext.Editor 编辑器

editorgrid       Ext.grid.EditorGridPanel 可编辑的表格

grid             Ext.grid.GridPanel 表格

paging           Ext.PagingToolbar 工具栏中的间隔

panel            Ext.Panel 面板

progress         Ext.ProgressBar 进度条

splitbutton      Ext.SplitButton 可分裂的按钮

tabpanel         Ext.TabPanel 选项面板

treepanel        Ext.tree.TreePanel 树

viewport         Ext.ViewPort 视图

window           Ext.Window 窗口

工具栏组件有

—————————————

toolbar          Ext.Toolbar 工具栏

tbbutton         Ext.Toolbar.Button 按钮

tbfill           Ext.Toolbar.Fill 文件

tbitem           Ext.Toolbar.Item 工具条项目

tbseparator      Ext.Toolbar.Separator 工具栏分隔符

tbspacer         Ext.Toolbar.Spacer 工具栏空白

tbsplit          Ext.Toolbar.SplitButton 工具栏分隔按钮

tbtext           Ext.Toolbar.TextItem 工具栏文本项

表单及字段组件包含:

—————————————

form             Ext.FormPanel Form面板

checkbox         Ext.form.Checkbox checkbox录入框

combo            Ext.form.ComboBox combo选择项

datefield        Ext.form.DateField 日期选择项

field            Ext.form.Field 表单字段

fieldset         Ext.form.FieldSet 表单字段组

hidden           Ext.form.Hidden 表单隐藏域

htmleditor       Ext.form.HtmlEditor html编辑器

numberfield      Ext.form.NumberField 数字编辑器

radio            Ext.form.Radio 单选按钮

textarea         Ext.form.TextArea 区域文本框

textfield        Ext.form.TextField 表单文本框

timefield        Ext.form.TimeField 时间录入项

trigger          Ext.form.TriggerField 触发录入项

阅读(590) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~