复用的类
有时候你打算生成一个带有若干配置项(config options)的组件(component),这些配置项你会想是让它可复的。就好像一种情况,有一部分的面板是已经固定好高、宽的,其中只有标题是不同的,我们可以把它做成预配置类(preconfigured class)
。
使用构造器函数
构造器函数
是完成该任务的方法之一,如下例:
// 构造器函数
var
MyPanel = function
(
config)
{
Ext.apply
(
this
, {
// 在这里设定预配置的参数项
width: 300
,
height: 300
}
)
;
MyPanel.superclass
.constructor
.apply
(
this
, arguments)
;
}
;
// My Panel继承了Ext.Panel
Ext.extend
(
MyPanel, Ext.Panel
, {
}
)
;
var
myfirstpanel = new
MyPanel(
{
title: 'My First Panel'
}
)
;
var
mysecondpanel = new
MyPanel(
{
title: 'My Second Panel'
}
)
;
工厂模式
生成“预配置对象”的一种途径是使用工厂模式(Factong Design Pattern)
。透过工厂函数返回一个全新的实例(该函数包含了预先配置好的参数项),工厂模式的方法不需要类的继承。
如果纯粹为了制定固定的配置项参数来讲工厂模式是一个不错的方法,其内部原理比继承、覆盖某个类来得简单。
function
createMyPanel(
config)
{
return
new
Ext.Panel
(
Ext.apply
(
{
//在这里设定预配置的参数项
width: 300
,
height: 300
}
, config)
)
;
}
;
var
myfirstpanel = createMyPanel(
{
title: 'My First Panel'
}
)
;
var
mysecondpanel = createMyPanel(
{
title: 'My Second Panel'
}
)
;
扩展功能
使用OO的类的其中一个原因是你打算从另外一个类的基础上扩展新的功能,假设现在有一面板类,我们在此基础上增加一个新的方法并重写(override)父类的一个方法,过程如下:
// Constructor
var
MyPanel = function
(
config)
{
//这里复用配置项
Ext.apply
(
this
,
width: 300
,
height: 300
}
)
;
// 调用父类的构造函数,提取父类的功能
MyPanel.superclass
.constructor
.apply
(
this
, arguments)
;
// 在这里你可以为当前对象新添加功能
// 如事件:
this
.on
(
'click'
, function
(
)
{
alert
(
"You Clicked "
+ this
.title
)
;}
, this
)
;
}
;
// My Panel继承了Ext.Panel
Ext.extend
(
MyPanel, Ext.Panel
, {
// 在这里你可以为当前的类加入静态的变量,所有这个类生成的实例都是使用这里声明的变量
// 如果你不确定请在构造器内设定。不要在这里放置由'new'或'xtype'操作而成的对象。在构造器内设定配置项对象会更安全。
// 新添加的函数
myNewFunction: function
(
)
{
}
,
// 重写原有函数
onRender: function
(
)
{
MyPanel.superclass
.onRender
.apply
(
this
, arguments)
;
this
.myNewFunction
(
)
;
}
}
)
;
var
myfirstpanel = new
MyPanel(
{
title: 'My First Panel'
}
)
;
var
mysecondpanel = new
MyPanel(
{
title: 'My Second Panel'
}
)
;
另一种方法是用构造器的方式写出代码:
var
MyPanel = function
(
config)
{
// 调用父类的构造函数,提取父类的功能
MyPanel.superclass
.constructor
.call
(
this
, Ext.apply
(
{
//这里复用配置项
width: 300
,
height: 300
}
, config)
)
;
// 位于构造器之后,在这里你可以为当前对象新添加功能(如处理如事件)
this
.on
(
'click'
, function
(
)
{
alert
(
"你已点击"
+ this
.title
)
;}
, this
)
;
}
;
以上的方法是重写构造器的方式实现继承的,另外我们还可以重写initComponents方法写出相同的功能,但需要指出是initComponent
方法是属于 Ext.Components
的方法,只能在组件上使用,不是一个通用的方法。这里是一个示例:
var
MyPanel = Ext.extend
(
Ext.Panel
, {
// 在这里你可以为当前的类加入静态的变量,所有这个类生成的实例都是使用这里声明的变量
// 如果你不确定请在构造器内设定。不要在这里放置由'new'或'xtype'操作而成的对象。在构造器内设定配置项对象会更安全。
initComponent: function
(
)
{
//Reusable config options here
Ext.apply
(
this
,
width: 300
,
height: 300
}
)
;
// 调用父类的构造函数,提取父类的功能
MyPanel.superclass
.initComponent
.apply
(
this
, arguments)
;
// 位于构造器之后,在这里你可以为当前对象新添加功能(如处理如事件)
this
.on
(
'click'
,
function
(
)
{
alert
(
"你已点击"
+ this
.title
)
;
}
,
this
)
;
}
,
// 新添加的函数
myNewFunction: function
(
)
{
}
,
// 重写原有函数
onRender: function
(
)
{
MyPanel.superclass
.onRender
.apply
(
this
, arguments)
;
this
.myNewFunction
(
)
;
}
}
)
;
你首先可能会观察到的是这儿没有构造函数。Ext会为你创建构造函数。这个构造函数有点不同,叫initComponent
。
这在高级教程和例子常见的使用方法。只要简单记住它做的事情与构造函数是差不多的。
推荐在调用父类的构造器或initComponent方法之后,为当前对象新添加事件。
MyPanel.superclass
.constructor
.apply
(
this
, arguments)
;
// 位于构造器之后,在这里你可以为当前对象新添加功能(如处理如事件)
this
.on
(
'click'
,
function
(
)
{
alert
(
"你已点击"
+ this
.title
)
;
}
,
this
)
;
工厂模式的案例中你可以在工厂方法以外的地方登记事件的处理函数。
myFirstPanel.on
(
'click'
,
function
(
)
{
alert
(
"你已点击"
+ this
.title
)
;
}
,
myFirstPanel //作用域
)
;
另外,除了添加listeners
配置项还有其他处理监听器的方法,不过我推荐高级用户使用。
完成同一件事在Ext中有不同的方式。挑选一种你较倾向的方法。
转http://www.extjs.com/learn/Tutorial:Extending_Ext_for_Newbies_%28Chinese%29
分享到:
相关推荐
EXT2.0作为EXTjs的一个早期版本,虽然现在已经被更现代的EXT版本取代,但其核心概念和架构对理解EXTjs的发展历程至关重要。 首先,EXT2.0的教程主要包括两个部分:《EXT2.0简明教程》和《ext基础教程》。这两份教材...
通过分析这个系统的源代码,新手可以快速提升对ExtJS的理解和运用能力。 #### 深入学习资源 对于希望深入学习ExtJS的开发者,作者提到了一本更详尽的指南——《ExtJS实用开发指南》。该指南不仅提供了框架的全面...
总结,这篇"我的Ext超级简单教程"将引导我们探索ExtJS的各个方面,从基础概念到实践技巧,包括但不限于设置环境、使用组件、数据管理以及利用控制器。配合提供的PDF文件,学习者可以深入学习源码,掌握这个强大的...
EXT 中文教程对于初学者来说是一份非常实用的资源,它可以帮助新手快速理解和掌握 EXTJS 的基本概念和使用方法。以下是一些主要的知识点: 1. **EXT 简介**: EXT 提供了一个完整的客户端应用开发模型,它基于组件...
学习这些教程和文档,你可以掌握如何创建动态的用户界面,利用ExtJS的组件进行数据展示和用户交互,以及如何有效地组织和管理代码。无论是新手还是经验丰富的开发者,这些资源都能提供必要的支持和指导,帮助你在...
在这个"新版Ext.NET+extjs标例框架项目"中,你将找到一个基础框架,它为快速开发提供了起点,特别适合新手或希望使用ExtJS技术栈的开发者。 首先,让我们了解一下ExtJS。ExtJS是一个功能强大的前端框架,它提供了...
ExtJS 中实现文件上传功能是非常方便的,但对于新手来说,控制文件上传类型是一个难题。例如,我们只想让用户上传特定的文件类型,例如txt文件,那么如何实现当用户上传非txt文件时,给出错误提示呢?这篇文章将详细...
Ext IDE 是一个强大的可视化编辑器,专为EXTJS框架设计,极大地简化了EXTJS应用的开发过程。EXTJS是一个流行的JavaScript库,用于构建富客户端Web应用程序,它提供了丰富的组件库和灵活的布局管理。在传统的EXTJS...
通过学习这些内容,一个ExtJS的新手开发者可以迅速地从入门到熟悉,并能够开始使用ExtJS创建出功能丰富、界面友好的Web应用程序。教程提供了大量的实例和代码段,有助于理解ExtJS的各种组件和类的用法。同时,教程也...
`overview` 和 `welcome` 可能是介绍性的文档或页面,它们可能包含了关于ExtJS 4.0的概述、新手引导以及如何开始使用的信息。 在ExtJS 4.0中,新的布局管理器提供了更多的灵活性,使得组件布局更加直观。此外,图表...
- **适用人群**: 无论是JavaScript的新手还是有一定经验的开发者,ExtJS 3.2都能提供足够的支持与帮助。 #### 2. **下载Ext** - **下载地址**: 可以通过官方网站 [http://extjs.com/downloads]...
这份"EXT 中文手册 用实例来说话"是EXTJS初学者和开发者的重要参考资料,它通过实例化的方式深入浅出地讲解EXTJS的核心概念和技术。 EXTJS 的核心组件包括窗口(Window)、面板(Panel)、表格(Grid)、表单(Form...
为了便于新手入门,本文档将详细介绍ExtJS的基本用法,包括获取和应用ExtJS库文件、基本控件的使用以及类的用法。 首先,想要使用ExtJS,需要获取ExtJS的库文件。可以通过访问官方网址***下载ExtJS框架,并解压该...
- ExtJS内置了对AJAX的支持,这意味着开发者可以轻松地与服务器端进行异步通信。 - 用户可以在不等待页面刷新的情况下进行多项操作,显著提升了应用程序的响应速度。 #### 五、案例分析 - **FeedViewer**:这个...
扩展EXT组件 - **组件扩展**:可以通过继承现有的组件来创建新的组件,这是ExtJS灵活性的重要体现。 - **创建过程**:包括文件的创建、组件的定义和测试等步骤。 #### 14. EXT的布局(Layout) - **布局概念**:...
1. **基础知识**:首先,教程会介绍JavaScript的基础,确保你对语言有扎实的理解,因为ExtJS是基于JavaScript构建的。接着,会讲解HTML和CSS,这些是网页开发的基础。 2. **ExtJS框架结构**:了解ExtJS的基本架构,...
EXTJS4的标签"ext4"和"extjs"表明它是EXTJS框架的第4个主要版本,而"extjs4.rar"则表示这是一个RAR格式的压缩包,可能包含了EXTJS4的所有资源。在解压并查看这些文件时,开发者可以找到具体的目录结构,了解如何组织...
- **适用人群**:无论是Ext库的新手还是希望深入了解Ext的开发者,本教程都适用。 - **预备知识**:需要具备一定的JavaScript基础知识以及对HTML DOM的基本了解。 - **Element:Ext的核心**: - **Element对象**...