ExtJS入门之一
类与继承
在项目中使用ExtJS
已经有一段时间了, 对于这个庞大的Script
类库有了一定的了解,
在Ext
的使用上也有了一定的经验, 现将这些经验做一下总结, 作为一个入门材料给大家分享。 对于Ext
库, 不要被它的庞大所吓倒, 只要静下心来看SDK
, 多做一些练习,
还是很容易上手的。
ExtJS
中的类与继承
在Ext
下, 定义一个JavaScript
类似乎没有什么特别的,
可以直接声明一个构造函数, 并使用关键字new
来进行初始化。 有一点值得注意的是在Ext
中频繁出现的Singleton
类, 普遍定义为:
<!-- [if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600"
o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f"
stroked="f">
<v:stroke joinstyle="miter"/>
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0"/>
<v:f eqn="sum @0 1 0"/>
<v:f eqn="sum 0 0 @1"/>
<v:f eqn="prod @2 1 2"/>
<v:f eqn="prod @3 21600 pixelWidth"/>
<v:f eqn="prod @3 21600 pixelHeight"/>
<v:f eqn="sum @0 0 1"/>
<v:f eqn="prod @6 1 2"/>
<v:f eqn="prod @7 21600 pixelWidth"/>
<v:f eqn="sum @8 21600 0"/>
<v:f eqn="prod @7 21600 pixelHeight"/>
<v:f eqn="sum @10 21600 0"/>
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
<o:lock v:ext="edit" aspectratio="t"/>
</v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" alt="image_thumb6"
style='width:226.5pt;height:89.25pt'>
<v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.png"
o:href="http://images.cnblogs.com/cnblogs_com/beginor/WindowsLiveWriter/ExtJS_819F/image_thumb6_3.png"/>
</v:shape><![endif]--><!-- [if !vml]-->
<!-- [endif]-->
然后就可以直接调用Foo
的方法了, 其实这段代码可以理解为
<!-- [if gte vml 1]><v:shape
id="_x0000_i1026" type="#_x0000_t75" alt="image_thumb9"
href="http://images.cnblogs.com/cnblogs_com/beginor/WindowsLiveWriter/ExtJS_819F/image_thumb9_2.png"
style='width:228.75pt;height:92.25pt' o:button="t">
<v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image003.png"
o:href="http://images.cnblogs.com/cnblogs_com/beginor/WindowsLiveWriter/ExtJS_819F/image_thumb9_thumb.png"/>
</v:shape><![endif]--><!-- [if !vml]-->
<!-- [endif]-->
这样,就容易理解了。
谈到类和继承, 有几个函数必须注意, Ext.apply
、
Ext.applyIf
和Ext.extend
:
-
Ext.apply(obj,
config, [defaults])
将config
对象的所有属性都复制到另一个对象obj
上, 第三个参数defaults
可以用来提供默认值, 不过通常指用前两个参数就够了。
这个函数主要用在构造函数中, 用来将配置复制到对象上。
-
Ext.applyIf(obj,
config)
和Ext.apply
的功能类似, 唯一不同的是, 这个函数只会将config
对象中有, 而obj
对象中没有的属性复制到obj
上。
-
Ext.extend(subclass,
superclass, [overrides])
用来继承已有的类, 通常的使用方法是
<!-- [if !supportLists]-->4.
<!-- [endif]-->var
SubClass = function
() {
<!-- [if !supportLists]-->5.
<!-- [endif]-->
SubClass.superclass.constructor
.call(this
);
<!-- [if !supportLists]-->6.
<!-- [endif]-->};
<!-- [if !supportLists]-->7.
<!-- [endif]-->Ext.extend(SubClass,
BaseClass, {
<!-- [if !supportLists]-->8.
<!-- [endif]-->
newMethod : function
()
{},
<!-- [if !supportLists]-->9.
<!-- [endif]-->
overriddenMethod : function
()
{}
};
在上面的代码中, SubClass
继承自BaseClass
,
添加了新的方法newMethod
, 重写了overriddenMethod
方法。
个人认为, 要扎实的掌握ExtJS
, 并且能够对原有类库进行扩展, 掌握以上的方法是必须的, 也是入门的必经之路。
事件是指一个特定的动作,这个动作可以针对HTML
元素的,如keydown,keyup,mouseover,
mouseout
等,也可以是对于其它自定义的动作,如对Ajax
异步请求的响应等。在ExtJS
中,该如何处理呢?
1.
处理HTML
元素的标准事件
HTML
元素的标准事件是指mouseover
、mousedown
、click
、blur
、focus
、change
等能够直接对HTML
元素发生的事件。在ExtJS
中,这些事件的处理可以用如下的代码:
-
注册一个事件处理函数使用:
Ext.get('myElement'
).on
('click'
, myHandler, myScope) myElement
是要注册的元素的
ID
,
click
是事件的名称(注意,和
HTML
元素中的声明
onXXX
不同,这里不需要
on
),
myHandler
是处理函数的函数名称,
myScope
是一个可选的参数,指定处理函数绑定的对象,也就是处理函数的作用域,如果不提供这个参数,则是默认的
window
。
-
撤销一个事件处理函数:
Ext.get('myElement'
).un
('click'
, myHandler, myScope)
参数的意义同上。
ExtJS
会根据不同的浏览器进行相应的处理,根本不需要理会用户用的是什么浏览器。根据事件的不同,传给处理函数的参数也会不同,这个只能参考ExtJS
的文档了,必要时还得参考源代码。
2.
处理自定义事件
在ExtJS
中使用自定义事件,需要从Ext.util.Observable
继承,示例代码如下:
Employee = function
(name
){
this
.name
= name
;
this
.addEvents({
"fired
" : true
,
"quit
" : true
});
}
Ext.extend(Employee, Ext.util.Observable, { ... });
在这段代码中,定义了一个Employee
类,定义了fired
和quit
两个事件。如何触发这两个事件呢,基类 Ext.util.Observable
提供了触发自定义事件的方法fireEvent(eventName, arg1, arg2, ... argn), eventName
是要触发的时间的名称(不区分大小写),后面的参数arg1
,arg2
等是要传给事件处理函数的参数。用上面的Employee
类做示 例,触发quit
事件:
this
.fireEvent('quit', this
);
这行代码将触发quit
事件,并将Empolyee
类的实例传给quit
事件的处理函数,quit
事件的订阅可以采用如下代码:
function
myHandler1(empolyee){ ... }
function
myHandler2(empolyee){ ... }
var
emp = new
Empolyee('tom');
emp.on('quit', myHandler1);
emp.on('quit', myHandler2);
在上面的代码中,为quit
事件注册了两个处理函数(myHandler1
与myHandler
),当quit
事件被激发时,将会依次调用myHandler1
和myHandler2
两个函数。
值得注意的是,不管是HTML
元素的标准事件还是自定义事件,如果为某个时间注册了多个处理函数,如前面的例子,如果myHandler1
返回 false
的话,则会取消在myHandler1
之后注册的处理函数的执行,即该事件被取消,从而停止继续执行该事件的处理函数,而这个返回值false
会作为事件激发的结果,返回给empolyee
,即:
var
result = this
.fireEvent('quit', this
);
if
(result === false
) {
alert
('event canceled'); //
这里表示事件被某个处理函数取消
}
else
{
alert
('event complete'); //
这里表示事件执行完毕
}
通过Ext
的自定义事件的机制,可以实现一对多的观察者模式,也可以实现一对一的绑定模式,这一点,在ExtJS
的开发中是很重要的。
分享到:
相关推荐
23085650737.rar可能包含了一些EXT的扩展库或者插件,这些扩展通常由社区开发者提供,增强了EXT的功能。学习如何使用这些扩展,可以让你的应用更具有个性化和特色。 最后,EXT教程.rar很可能是整个教程的综合资源包...
在EXT5.1中,开发者可以期待找到关于Grid面板、表单、图表、树形视图、布局管理、拖放操作等核心组件的详尽信息。此外,还有关于数据绑定、远程数据加载(AJAX)以及状态管理等方面的指南。 "template.html"文件...
"EXT 中文手册.pdf"是EXT组件库的中文版文档,对于初学者来说是一份宝贵的参考资料。手册通常会详细介绍EXT的安装步骤、基本概念、组件使用方法以及事件处理等核心内容。通过阅读这份手册,新手可以理解EXT的架构,...
3.0版本的用户可能能够找到更多关于此版本的解决方案和最佳实践。 8. **兼容性**:在使用3.0版本时,开发者需要考虑与现有浏览器的兼容性,特别是对于那些较老的浏览器,可能需要额外的polyfill或解决策略。 9. **...
这篇指南将着重于EXT4.0的基础知识,帮助初学者快速入门EXT JS的开发。 1. **EXTJS基础** - **获取EXTJS**:EXTJS的下载地址为http://extjs.org.cn/,你可以在这里找到EXTJS的发布包以及相关的支持资源。 - **...
全面性意味着开发者可以从这里找到关于ExtJS的所有基本知识点,而经典性则意味着这些信息经过了时间的考验,是可靠且实用的。 "入门使用"则说明这套文档适合初学者,它可能包含了一步步的引导,从安装环境到创建第...
在API中,你可以找到关于`Ext.Panel`的所有配置项和方法,如`title`(设置面板标题)和`dockedItems`(在面板边缘添加组件)。 接着,“英文API”是原版的ExtJS英文文档,对于深入理解某些高级概念和技术细节非常有...
EXT中文手册是一个全面的参考资料,涵盖了EXT开发的各个层面,无论你是初学者还是经验丰富的开发者,都能从中找到所需的信息,提升EXT开发技能。通过深入学习和实践,开发者可以充分利用EXT的强大功能,创建出功能...
本实例将帮助初学者了解如何使用ExtJS入门,并通过提供的资源文件学习如何改变文件的颜色。 首先,我们要明白在ExtJS中改变文件颜色主要涉及到CSS样式和组件的配置。ExtJS的组件如按钮、表格、面板等都可以通过CSS...
在提供的部分内容中,我们可以看到一系列关于Ext.MessageBox的实例,这是一个非常实用的组件,常用于弹出警告、确认和提示对话框。 1. **Ext.MessageBox.alert()**:此方法用于显示一个简单的警告对话框,包含一个...
在EXT.NET帮助文件中,你可以找到以下关键内容: - **入门指南**:介绍如何设置开发环境,以及创建第一个EXT.NET应用程序的基本步骤。 - **组件参考**:详细说明每个组件的属性、方法、事件,以及如何在代码中使用...
总的来说,EXT中文手册是一份全面的EXT学习资源,无论你是初学者还是经验丰富的开发者,都能从中找到有价值的指导,提升EXT开发技能。通过阅读和实践手册中的内容,你可以构建出高效、美观且易于维护的Web应用程序。
1. **LICENSE**:这是关于软件授权的重要文件,通常包含Ext.NET.WebForms.4.1.0的许可证信息。许可证类型可能会影响如何在商业项目中使用该库,包括是否允许修改、分发以及有无商业用途的限制等。开发者需要仔细阅读...
根据给定的文件信息,我们可以提炼出一系列与EXT框架相关的知识点,这些知识点涵盖了EXT的各个方面,从基础到高级应用...无论是初学者还是有经验的开发者,都能从中找到有价值的信息,提升自己在EXT框架下的开发技能。
Ext开发指南是一本专注于介绍如何使用ExtJS框架进行Web应用程序开发的专业资料。ExtJS是一个流行的JavaScript库,用于构建用户界面,特别是企业级的富互联网应用(RIA)。它提供了丰富的组件库,包括表格、树形视图...
在这个"用ext写的前台源码 有说明文档"的压缩包中,你将找到使用ExtJS框架开发的前端代码,以及相关的JSON数据处理。 在ExtJS中,你可以使用各种组件如表格、面板、表单、树形结构等来构建复杂的UI。这些组件都封装...
在EXT JS 2.3的例子中,你可能会找到以下类型的示例: - **基本组件使用**:如按钮、面板、窗口、表单等基础组件的创建和配置。 - **数据网格**:展示如何使用Grid Panel显示和操作数据,包括分页、排序、过滤等。 ...
对于刚接触Ext库的新用户来说,本篇教程将从总体上对Ext库进行概述,并指导如何利用它完成一些常见的程序任务。 #### 二、Ext库的核心特性 - **跨浏览器兼容性**:Ext库支持多种主流浏览器,确保在不同平台上都能...