`
unifly
  • 浏览: 56330 次
  • 性别: 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的JavaScript文件后,开发者可以开始创建EXT组件。EXT的核心元素是Element,它是所有DOM元素的抽象表示,提供了丰富的操作DOM的方法。 3. Element:Ext的核心 Element类是EXT处理DOM的基础,提供...

    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 学习中文手册

    扩展EXT组件 29 文件的创建 30 Let's go 33 完成 35 EXT的布局(Layout) 37 简单的例子 38 加入内容 42 开始使用Grid 51 步骤一 定义数据(Data Definition) 51 步骤二 列模型(Column Model) 52 Grid组件的简易...

    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