`
unifly
  • 浏览: 56206 次
  • 性别: Icon_minigender_1
  • 来自: yantai
社区版块
存档分类
最新评论

[翻译]Ext组件扩展概述

    博客分类:
  • Ext
阅读更多

心血来潮,翻译了一篇extjs上的教程,希望大家批评指正,呵呵……

原文链接:http://extjs.com/learn/Manual:Component:Extending_Ext_Components

Manual:Component:Extending Ext Components(Chinese)

From Learn About the Ext JavaScript Library

Jump to: navigation , search
<!---->
Summary: 本文概述了如何扩展Ext中的组件并介绍了许多来自于Ext社区成员很好的文章。
Author: Patrick Donelan (译者:unifly )
Published: 2008-04-16
Ext Version: 2.0
Languages: en.png English cn.png Chinese

Contents

[hide ]
<script type="text/javascript"></script>

引言

起初,Ext.extend() 干的不错,它使你能够建立强大的面向对象的JavaScript类层次结构。你可以用它构建你自己的类和派生类,当然也可以扩展Ext的内建类。如果不熟悉Ext.extend(),你应该先读一下Manual:Intro:Inheritance

Jozef Sakalos写的Tutorial:Extending_Ext_Class 详细介绍了怎样在Ext1.X下实现继承。因为自建的构造函数在Ext2.X下仍能够工作,而且毫无疑问你将会遇到2.X之前构造方式的代码,所以本文还是很值得一读的。

Ext.Component

大多数Ext窗口小部件(如Form elements, Panels, Toolbars, ..)继承自Ext.Component(那些没有继承的将在Ext3 中实现继承)。

预配置类

最简单的扩展Ext.Component的方式(或者任何继承自它的类)就是延续Ext1.X中利用Ext.extend() 的做法。然而还有个差别,就是你不需要定义自己的构造函数(构造函数将由initComponent()来处理,文章后面将会讲到)。如果你所需的是定义一些自己的缺省类来重用(指的是这里和ExtJS社区作为预配置类),所有你所需要做的就是:

//定义组件Ext.some.component的预配置类MyComponent



MyComponent = Ext.extend

(

Ext.some

.component

, {


    myDefault1: '..'

,
    myDefault2: '..'


}
)

;
 
//注册成xtype以便延迟加载



Ext.reg

(

'mycomponentxtype'

, MyComponent)

;

在以上示例中,Ext.extend()中的第二个参数对象包含的自定义参数可覆盖Ext.some.component中已经支持的缺省参数。

以上示例看上去较简单,但能够让你从程序中重构除去相当数量重复的代码,并生成可重用的对象。举个例子,你可以用预配置选项创建一个Ext.some.component的实例,代码如下:

var


 myComponent = new


 MyComponent(
)

;

或者通过你注册过的Component XType 延迟加载,下面示例作为Panel的组件项:

{

..
   items

: [

 {

xtype: 'mycomponentxtype'

}

 ]


..}

扩展Ext.Component

好的,虽然预配置类很有用,但是目前为止我们还没有添加任何其他的功能给继承类。我们需要覆盖一些方法来实现。这是Ext2.X精彩的地方。

Ext.Component源自1.x,但是在2.x中,它得到了扩展和加强,使它成为了整个架构中最基础的类。现在组件提供统一的组件创建、渲染、事件处理、状态维护、销毁模型,而且Ext中的每个组件,凡是需要这些特性的现在都扩展自Component。Ext_2_Overview#Component_Model

你应该好好的学习下上面的 Ext_2_Overview ,文章详细描述了组件的方方面面。当你一行行的跟踪Ext.Component中的源代码(在ExtJS的src目录下的widgets子目录下的Component.js中),你会明白the Component Life Cycle , Ext_2_Overview#RenderingExt_2_Overview#Destruction 中的步骤描述所解释的实现,将对你了解Ext如何运行很有启发。

现在,既然本文是关于扩展Ext.Component的,主要关注的方法应是initComponent() ,在the Component Life Cycle (组件生命周期)中扮演了首要角色,在你掌握了initComponent() 后,你可以继续研究其他重要的方法,如onRender() ,使你能够扩展Ext_2_Overview#RenderingonDestroy() 用来扩展Ext_2_Overview#Destruction ,在这方面,我会指出一些由Ext社区成员写的非常好的文档。

Jozef Sakalos写的Tutorial:Writing_a_Big_Application_in_Ext 是个非常不错的教程,它教你使用新的组件继承模型,并解释了为什么组件继承模型无疑是构建优良程序的好的基础。

还有由 Jozef Sakalos写的Tutorial:Extending_Ext2_Class ,也提供了实际的例子来讲解(mjlecomte的帖子 提供了该例子的建议版本)。

一个可重用模板

下面的模板(基于Jozef Sakalos在mjlecomte's帖子 中的回复)可作为扩展Ext.Component的起点。

MyComponent = Ext.extend

(

Ext.some

.component

, {


    //缺省构造参数,可被自定义设置覆盖



    propA: 1

,
 
    initComponent: function


(
)
{


       //在组件初始化期间调用的代码



 
        //因为配置对象应用到了“this”,所以属性可以在这里被覆盖,或者添加新的属性



        //(如items,tools,buttons)



        Ext.apply

(

this


, {


            propA: 3


        }
)

;
 
       //调用父类代码之前        



 
        //调用父类构造函数(必须)



        MyComponent.superclass

.initComponent

.apply

(

this


, arguments)

;
 
       //调用父类代码之后



        //如:设置事件处理和渲染组件



    }

,
 
    //覆盖其他父类方法



    onRender: function


(
)
{


 
        //调用父类代码之前



 
        //调用父类相应方法(必须)



        MyScope.superclass

.onRender

.apply

(

this


, arguments)

;
 
        //调用父类代码之后



 
    }


}
)

;
 
//注册成xtype以便能够延迟加载



Ext.reg

(

'mycomponentxtype'

, MyComponent)

;

上面是一个启发例子,如果你用以下任意例子创建以上代码的实例 :

var


 myComponent = new


 MyComponent(
{


    propA: 2


}
)

;
//或者延迟加载:



{

..
  items

: {

xtype: 'mycomponentxtype'

, propA: 2

}


..}

属性propA 将被设置3次,按顺序分别是1,2,3 。通过跟踪代码(和注释) ,你会发现初始值为1(构造缺省),然后通过用户配置对象设置为2,最后在initComponent方法中被覆盖设置成3.希望这个例子能让你稍微明白代码执行的顺序(而不是按照你读代码的顺序!)。

因为组件是其他组件的基础,所以下面代码是获取基础组件快捷方法。

var


 topCmp = (

function


(

o)
{

while


(

o.ownerCt

)
{

o=o.ownerCt

}

 return


 o;}

,this


)

;

结束语

本文主要关注于initComponent()方法及其在the Component Life Cycle 中的角色。一旦你掌握了它,就该研究Ext_2_Overview#Component_Model 列出的Ext组件模型的其他方面(如管理渲染、状态管理、插件等)。非常感谢Jozef Sakalos,他发表了很好的关于扩展组件方面的帖子和教程,当然还要感谢Jack和Ext团队给我们提供了如此棒的框架,迫不及待想看看Ext3给我们带来了什么!

分享到:
评论
4 楼 sp42 2008-05-28  
能放出来大致都没什么差错了, 顺便也将连接换咱中文的 呵
3 楼 unifly 2008-05-28  
多谢楼上两位捧场,感觉有些地方翻的有些生涩,俺语文不好,希望大家帮忙找找毛病,然后再考虑放到官网上,嘿嘿……
2 楼 hanjiangit 2008-05-28  
不错哦   不知道什么时候才能看到Ext的中问译本API。。。。渴望
1 楼 KKFC 2008-05-28  
不错 赞一个 怎么还不让ext官网上面看到我们的国旗小logo?

相关推荐

    Ext组件说明 Ext组件概述

    ### Ext组件概述与初学者指南 #### 一、Ext组件概览 Ext是一个功能丰富的JavaScript框架,用于构建桌面级Web应用程序。它提供了大量的组件和工具,使得开发者能够快速且高效地构建用户界面。对于初学者而言,理解...

    Ext组件描述,各个组件含义

    ### Ext组件概述与详解 #### 一、Ext基础组件 **1.1 Box Component (Ext.BoxComponent)** - **xtype**: `box` - **功能描述**:Box Component 是一个非常基本的 Ext 组件,主要用于定义具有边框和其他布局属性的...

    Ext_4概述.doc

    《Ext 4 概述与核心特性》 Ext 4 是一个革命性的Web应用程序开发框架,它对Ext 3进行了大幅度的改进和升级。几乎所有的组件和子系统都得到了优化,为开发者带来了全新的体验。在向Ext 4过渡的过程中,开发者需要...

    yui的扩展ext.rar

    - 构建组件:根据需求创建各种EXT组件,并设置其属性。 - 添加事件监听:通过事件监听实现组件间的交互。 - 初始化应用:使用Ext.onReady或Ext.application启动应用。 5. EXT的响应式设计 EXT还支持响应式布局,...

    Ext官方中文教程(可打包下载)

    扩展Ext中的组件 扩展与插件之间的区别 扩展Ext的新手教程 Ext的类继承 从源码生成Ext 基础用法: DomQuery基础 Ext中的事件 简述模板 模板(Templates)的函数 教你创建Ext UI控件 事件的处理 Ext中的继承 Ext...

    EXT中文教程

    - **扩展EXT组件** 开发者可以通过继承EXT提供的组件基类,定制出符合自己需求的组件,增加或修改功能。 - **EXT的布局(Layout)** EXT提供了多种布局方式,如CardLayout、BorderLayout等,用于控制组件在页面...

    Ext2.0 概述.doc

    1. **组件模型 (Component Model)**: 在EXT2.0中,Component和BoxComponent类得到了深度整合,成为所有主要组件的基础。组件生命周期的管理更加完善,使得创建和管理UI组件变得更加容易。开发者可以通过理解和利用...

    Ext扩展整理后吐血奉献

    标题中的“Ext扩展整理后吐血奉献”表明这是一篇关于ExtJS框架的深入解析文章,作者可能在其中分享了自己研究ExtJS扩展组件的心得体会。ExtJS是一个基于JavaScript的开源富因特网应用程序框架,用于构建桌面和移动...

    Ext2.2 中文手册

    - **Ext2 概述**:提供了 Ext2 版本的主要特性和新组件的介绍。 - **组件模型**:解释了 Ext 中的组件模型,包括基本组件和容器。 - **容器模型**:详细介绍了容器组件的作用和用法。 - **布局 Layouts**:列举了...

    ext学习文档

    - **Let's go**: 提供了一个简单的示例,展示如何扩展现有的EXT组件。 - **完成**: 总结了扩展EXT组件的过程。 #### 8. EXT的布局(Layout) - **简单的例子**: 展示了如何使用EXT的布局管理器来组织UI元素。 - **...

    ext4 表格分页实例代码

    以下是简单的EXT4表格分页实例代码概述: ```javascript // 数据模型定义 Ext.define('MyApp.model.MyModel', { extend: 'Ext.data.Model', fields: ['id', 'name', 'date'] }); // 数据存储配置 var store = ...

    ext-base.js

    1. **基础对象**:EXT中的所有对象都继承自Ext.Base,这个基类定义了EXT对象的基本行为,如事件处理、属性管理和扩展机制等。 2. **类系统**:EXT使用面向对象的编程方式,"ext-base.js"中包含了类的创建、继承和...

    ext js中文开发手册

    Grid组件是EXT JS中用于展示大量表格数据的核心组件。它支持数据分页、排序、过滤和编辑,适用于构建数据密集型应用。 **十二、Menu组件** Menu组件用于创建下拉菜单和上下文菜单,支持多种Item类型,如普通菜单项...

    asp.net ext 中文手册

    DomQuery基础与EXT组件扩展 `DomQuery`是EXT提供的一个用于操作DOM的强大工具,它类似于jQuery,但专门针对EXT进行了优化。掌握`DomQuery`的基础用法对于高效开发EXT应用至关重要。此外,扩展EXT组件也是开发中...

    ext图书系统 18种皮肤

    1. EXT概述: EXT是一个用于构建富客户端Web应用的JavaScript库,由Sencha公司开发。它提供了一套完整的UI组件,包括表格、树形视图、表格面板、表单、菜单、工具栏等,使得开发者可以快速构建出交互性强、用户体验...

    ext-word文档

    #### 扩展EXT组件 ExtJS允许开发者扩展现有的组件,以满足特定的需求。这通常是通过覆盖现有组件的方法或属性来实现的。例如,可以通过继承一个现有组件,并在其基础上添加新的功能: ```javascript Ext.define('...

    Ext 教程详解 适

    - 响应事件:EXT通过事件监听机制实现了组件间的交互,你可以为任何EXT组件添加事件监听器,响应用户的操作。 - 使用Widgets:Widget是EXT中可复用的UI组件,如按钮、菜单、日历等,它们都有自己的属性、方法和事件...

    ext.net 3.2

    1. **Ext.NET框架概述** Ext.NET是一个开源项目,它允许.NET开发者使用ASP.NET Web Forms技术创建具有桌面应用级别的交互性和用户体验的Web应用程序。3.2版本是该框架的一个稳定版本,引入了多项新功能和改进。 2....

Global site tag (gtag.js) - Google Analytics