ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:100.71KB ,
资源ID:8192834      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8192834.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第2章EXT组件.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第2章EXT组件.docx

1、第2章 EXT组件第2章 EXT组件1. Ext类库简介 ExtJS由一系列的类库组成,一旦页面成功加载了ExtJS库后,我们就可以在页面中通过javascript调用ExtJS的类及控件来实现需要的功能。ExtJS的类库由以下几部分组成:v 底层API(core):底层API中提供了对DOM操作、查询的封装、事件处理、DOM查询器等基础的功能。其它控件都是建立在这些底层api的基础上,底层api位于源代码目录的core子目录中,包括DomHelper.js、Element.js等文件,如图所示。 v 控件(widgets):控件是指可以直接在页面中创建的可视化组件,比如面板、选项板、表格、树

2、、窗口、菜单、工具栏、按钮等等,在我们的应用程序中可以直接通过应用这些控件来实现友好、交互性强的应用程序的UI。控件位于源代码目录的widgets子目录中,包含如图所示v 实用工具Utils:Ext提供了很多的实用工具,可以方便我们实现如数据内容格式化、JSON数据解码或反解码、对Date、Array、发送Ajax请求、Cookie管理、CSS管理等扩展等功能,如图所示: 2. ExtJS的组件 Ext2.0对框架进行了非常大的重构,其中最重要的就是形成了一个结构及层次分明的组件体系,由这些组件形成了Ext的控件,Ext组件是由 Component类定义,每一种组件都有一个指定的xtype属性

3、值,通过该值可以得到一个组件的类型或者是定义一个指定类型的组件。组件大致可以分成三大类,即工具栏组件、基本组件、表单及元素组件。v 工具栏组件有xtype Class-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 工具栏分隔按钮tb

4、text Ext.Toolbar.TextItem工具栏文本项v 基本组件有:xtype Class- -box Ext.BoxComponent 具有边框属性的组件button Ext.Button按钮colorpalette Ext.ColorPalette 调色板component Ext.Component组件container Ext.Container容器cycle Ext.CycleButtondataview Ext.DataView 数据显示视图datepicker Ext.DatePicker 日期选择面板editor Ext.Editor编辑器editorgrid Ext

5、.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窗口v 表单及字段组件包含:xtype Class-form Ext.Form

6、PanelForm面板checkbox Ext.form.Checkboxcheckbox录入框combo Ext.form.ComboBoxcombo选择项datefield Ext.form.DateField日期选择项field Ext.form.Field表单字段fieldset Ext.form.FieldSet表单字段组hidden Ext.form.Hidden 表单隐藏域htmleditor Ext.form.HtmlEditorhtml编辑器numberfield Ext.form.NumberField数字编辑器radio Ext.form.Radio单选按钮textare

7、a Ext.form.TextArea区域文本框textfield Ext.form.TextField表单文本框timefield Ext.form.TimeField时间录入项trigger Ext.form.TriggerField触发录入项3. ExtJS组件的使用 组件可以直接通过new 关键子来创建,比如创建一个窗口,使用new Ext.Window(),创建一个表格则使用new Ext.GridPanel()。当然,除了一些普通的组件以外,一般都会在构造函数中通过传递构造参数来创建组件。 组件的构造函数中一般都可以包含一个对象,这个对象包含创建组件所需要的配置属性及值,组件根据构

8、造函数中的参数属性值来初始化组件。比如下面的例子: var obj=title:hello,width:300,height:200,html:Hello,easyjf open source;var panel=new Ext.Panel(obj);panel.render(hello); 运行上面的代码可以实现如下图所示的结果:var panel=new Ext.Panel(title:hello,width:300,height:200,html:Hello,easyjf open source);panel.render(hello); 可以省掉变量obj,直接写成如下的形式

9、:new Ext.Panel(renderTo:hello,title:hello,width:300,height:200,html:Hello,easyjf open source); render方法后面的参数表示页面上的div元素id,也可以直接在参数中通过renderTo参数来省略手动调用render方法,只需要在构造函数的参数中添加一个renderTo属性即可,如下:var panel=new Ext.TabPanel(width:300,height:200,items:title:“面板1”,height:30,title:“面板2”,height:30,title:“面板3”

10、,height:30);panel.render(“hello”); 对于容器中的子元素组件,都支持延迟加载的方式创建控件,此时可以直接通过在需要父组件的构造函数中,通过给属性items传递数组方式实现构造。如下面的代码:var panel=new Ext.TabPanel(width:300,height:200,items:new Ext.Panel(title:面板1,height:30),new Ext.Panel(title:面板2,height:30),new Ext.Panel(title:面板3,height:30);panel.render(hello); 注意中括号中加粗部

11、份的代码,这些代码定义了TabPanel这个容器控件中的子元素,这里包括三个面板。上面的代码与下面的代码等价:前者不但省略掉了new Ext.Panel这个构造函数,最重要前者只有在初始化TabPanel的时候,才会创建子面板,而第二种方式则在程序一开始就会创建子面板。也就是说,前者实现的延迟加载。 4. 匿名对象,函数和延时加载 5. xtype的使用 xtype就是一个代表类(Class)的标识名字。 譬如,你有这个类,名字是Ext.ux.MyGrid。正常情况下你需要用这个名字来实例化这个类(创建类的对象)。 var grid = new Ext.ux.MyGrid();除了类名外,你还

12、可以这样登记类的xtype: Ext.reg(mygrid, Ext.ux.MyGrid); 其中xtype 是 mygrid 而类名的一般形式是Ext.ux.MyGrid。上面的语句登记了新的xtype,换种说法说,xtype mygrid 与类 Ext.ux.MyGrid是连在一起的。 到底有什么好处? 如果你使用xtype,那么在内存中的仅仅是一个匿名对象,像: xtype:mygrid,border:false,width:600,height:400,. 消耗没有复杂的实例对象来得大。等价于: new Ext.ux.MyGrid();6. 组件的配置属性 在ExtJS中,除了一些特殊

13、的组件或类以外,所有的组件在初始化的时候 都可以在构造函数使用一个包含属性名称及值的对象,该对象中的信息也就是指组件的配置属性。比如配置一个面板: new Ext.Panel(title:面板,html面板内容,height:100); var b=new Ext.Button(text:添加,pressed:true,height:30,handler:Ext.emptyFn); 再比如创建一个按钮: 每一个组件除了继承基类中的配置属性以外,还会根据需要增加自己的配置属性,另外子类中有的时候还会把父类的一些配置属性的含义及用途重新定 义。学习及使用ExtJS,其中最关键的是掌握ExtJS中的

14、各个组件的配置属性及具体的含义,这些配置属性在下载下来的ExtJS源码文档中都有详细的 说明,可以通过这个文档详细了解每一个组件的特性。由于所有的组件都继承自Ext.Component,因此在这里我们列出组件基类Component中的配置属性简单介绍。 配置属性名称类型简介allowDomMoveBoolean当渲染这个组件时是否允许移动Dom节点(默认值为true)。applyToMixed混合参数,表示把该组件应用指定的对象。参数可以是节点的id,一个DOM节点或一个存在的元素或与之相对应的在document中已出现的id。当使用 applyTo,也可以提供一个id或CSS的class名称

15、,如果子组件允许它将尝试创建一个。如果指写applyTo选项,所有传递到 renderTo方法的值将被忽略,并且目标元素的父节点将自动指定为这个组件的容器。使用applyTo选项后,则不需要再调用render()方法来 渲染组件。autoShowBoolean自动显示,如为true,则组件将检查所有隐藏类型的class(如:x-hidden 或x-hide-display并在渲染时移除(默认为false)。clsString给组件添加额外的样式信息,(默认值为),如果想自定义组件或它的子组件的样式,这个选项是非常有用的。ctClsString给组件的容器添加额外的样式信息,(默认值为)。dis

16、abledClassString给被禁用的组件添加额外的CSS样式信息,(默认为x-item-disabled)。hideModeString组件的隐藏方式,支持的值有visibility,也就是css里的visibility,offsets负数偏移位置的值和display也就是css里的display,默认值为display。hideParentBoolean是否隐藏父容器,该值为true时将会显示或隐藏组件的容器,false时则只隐藏和显示组件本身(默认值为false)。idString组件的id,默认为一个自动分配置的id。listenersObject给对象配置多个事件监听器,在对象初

17、始化会初始化这些监听器。pluginsObject/Array一 个对象或数组,将用于增加组件的自定义功能。一个有效的组件插件必须包含一个init方法,该方法可以带一个Ext.Component类型参数。当组件 建立后,如果该组件包含有效的插件,将调用每一个插件的init方法,把组件传递给插件,插件就能够实现对组件的方法调用及事件应用等,从而实现对组件功 能的扩充。renderToMixed混合数据参数,指定要渲染到节点的id,一个DOM的节点或一个已存在的容器。如果使用了这个配置选项,则组件的render()就不是必需的了。stateEventsArray定义需要保存组件状态信息的事件。当指

18、定的事件发生时,组件会保存它的状态(默认为none),其值为这个组件支持的任意event类型,包含组件自身的或自定义事件。(例如:click,customerchange)。stateIdString组件的状态ID,状态管理器使用该id来管理组件的状态信息,默认值为组件的id。styleString给该组件的元素指定特定的样式信息,有效的参数为Ext.Element.applyStyles中的值 xtypeString指定所要创建组件的xtype,用于构造函数中没有意义。该参数用于在容器组件中创建创建子组件并延迟实例化和渲染时使用。如果是自定义的组件,则需要用Ext.ComponentMgr.

19、registerType来进行注册,才会支持延迟实例化和渲染。elMixed相当于applyTo7. 事件处理 function a() alert(some thing); ExtJS提供了一套强大的事件处理机制,通过这些事件处理机制来响应用户的动作、监控控件状态变化、更新控件视图信息、与服务器进行交互等等。事件统一由Ext.EventManager对象管理,与浏览器W3C标准事件对象Event相对应,Ext封装了一个Ext.EventObject事件对象。支持事件处理的类(或接口)为Ext.util.Observable,凡是继承该类的组件或类都支持往对象中添加事件处理及响应功能。 首先我

20、们来看标准html中的事件处理,看下面的html代码function a()alert(some thing);window.onload=function()document.getElementById(btnAlert).onclick=a;点击这个按钮则会触发onclick事件,并执行onclick事件处理函数中指定的代码,这里直接执行函数a中的代码,也即弹出一个简单的信息提示框。再简单修改一下上面的代码,内容如下:上面的代码在文档加载的时候,就直接对btnAlert的onclick赋值,非常清晰的指明了按钮btnAlert的onclick事件响应函数为a,注意这里a后面不能使用括fu

21、nction a()alert(some thing);Ext.onReady(function() Ext.get(btnAlert).addListener(click,a););号“()”。 ExtJS中组件的事件处理跟上面相似,看下面的代码:Ext.get(btnAlert)得到一个与页面中按钮btnAlert关联的Ext.Element对象,可以直接调用该对象上的 addListener方法来给对象添加事件,同样实现前面的效果。在调用addListener 方法的代码中,第一个参数表示事件名称,第二个参数表示事件处理器或整个响应函数。ExtJS支持事件队列,可以往对象的某一个事件中添

22、加多个事件响应函数,看下面的代码:Ext.onReady(function() Ext.get(btnAlert).on(click,a);Ext.get(btnAlert).on(click,a); );addLinster方法的另外一个简写形式是on,由于调用了两次addListener方法,因此当点击按钮的时候会弹出两次信息。Ext.onReady(function() Ext.get(btnAlert).on(click,a,this,delay:2000); );当然,ExtJS还支持事件延迟处理或事件处理缓存等功能,比如下面的代码:由于在调用addListener的时候传递指定的d

23、elay为2000,因此当用户点击按钮的时候,不会马上执行事件响应函数,而是在2000毫秒,也就是两秒后才会弹出提示信息框。This指代发生事件的对象。Ext.onReady(function() var win=new Ext.Window( title:不能关闭的窗口, height:200, width:300 ); win.on(beforedestroy,function(obj) alert(想关闭我,这是不可能的!); obj.show(); return false; ); win.show(););当然,在使用Ext的事件时,我们一般是直接在控件上事件,每一个控件包含哪些事件,在什么时候触发,触发时传递的参数等,在ExtJS项目的文档中都有较为详细的说明。比如对于所有的组件Component,都包含一个beforedestroy事件,该事件会在Ext销毁这一个组件时触发,如果事件响应函数返回false,则会取消组件的销毁操作。由于在窗口对象的beforedestroy事件响应函数返回值为false,因此执行这段程序,你会发现这个窗口将无法关闭。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1