`

扩展Ext的新手教程(转载)

阅读更多

一般你会希望使用类(class)来诠释面何对象的思想。本教程的所述几点理点亦体现了这种思想。

 

复用的类

有时候你打算生成一个带有若干配置项(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中有不同的方式。挑选一种你较倾向的方法。

分享到:
评论

相关推荐

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

    扩展Ext的新手教程 Ext的类继承 从源码生成Ext 基础用法: DomQuery基础 Ext中的事件 简述模板 模板(Templates)的函数 教你创建Ext UI控件 事件的处理 Ext中的继承 Ext的类设计 Ajax通讯 JSON处理方法 函数的...

    ext教程、ext核心API 、ext中文教程

    在压缩包中的"EXT教程"文件,可能包含了从入门到进阶的各类教程文章,覆盖了EXT的基本概念、组件使用、布局配置、数据绑定等多个方面。通过阅读这些教程,你可以逐步掌握EXT的开发技巧,从而构建出专业级别的Web应用...

    ext教程、ext使用简明教程

    ext使用简明教程 ext中文手册 ext中文教程 extJs学习

    ext中文教程 ext API

    ext中文教程 ext API ext中文教程 ext API

    EXT教程示例代码

    EXT教程示例代码,供EXT新手学习的好资料。

    Ext入门-详细教程

    Ext入门-详细教程Ext入门-详细教程Ext入门-详细教程Ext入门-详细教程Ext入门-详细教程Ext入门-详细教程Ext入门-详细教程Ext入门-详细教程Ext入门-详细教程Ext入门-详细教程Ext入门-详细教程Ext入门-详细教程Ext入门-...

    EXT2.3+EXT2.0教程

    这篇教程旨在帮助新手快速掌握EXT的使用,从而在Web开发中实现更加交互性强、功能完善的页面。 EXT2.0是一个重要的里程碑,它引入了许多新特性,例如改进了布局系统,使得组件的排列和自适应更加灵活。同时,EXT2.0...

    EXT中文教程

    ### EXT中文教程知识点详解 #### 1. EXT简介与核心概念 EXT,即Ext JS,是一种基于JavaScript的开源框架,用于构建复杂的Web应用程序。它提供了一系列丰富的用户界面组件,简化了DOM操作,使得开发者能够轻松地...

    Ext教程(原创整合Ext官方中文教程)

    Ext教程 整合官方中文教程的电子书,对Ext初学以及提高有很大帮助

    ext PPT,EXT 教程,EXT 中文帮助手册,EXT 中文手册,ext_教程(入门到精通),Ext技术程序文档大全.

    通过这些资源,开发者可以从基础到高级全面掌握EXT JS,无论是刚接触EXT的新手,还是希望提升技能的开发者,都能从中受益。学习EXT,不仅可以提升Web应用的用户体验,还能提高开发效率,因为EXT已经封装了许多复杂的...

    新版ext教程.pdf

    新版ext教程.pdf新版ext教程.pdf新版ext教程.pdf新版ext教程.pdf新版ext教程.pdf新版ext教程.pdf新版ext教程.pdf新版ext教程.pdf新版ext教程.pdf新版ext教程.pdf

    ext 3.2 资源,和ext 基础教程

    完整的ext 3.2的版本,可以在examples文件夹下看到效果!完整的ext 基础教程,可以让ext基础开发者跟快的从事前端页面的开发和设计!

    EXT中文教程(实例版).pdf

    《EXT中文教程(实例版)》是一份详尽的指南,旨在帮助读者深入理解并掌握EXT框架的应用。EXT,作为一款强大的JavaScript库,主要用于构建复杂的Web应用程序,特别是那些需要高度交互性和动态数据处理功能的界面。该...

    EXT JS教程手册

    EXT JS 教程手册 蛮详细的........

    ext_教程 (ext 相 关)

    本教程将带你从入门到精通EXT,让你掌握EXT的精髓。 首先,EXT中文手册是入门EXT的基石。手册详细介绍了EXT的基础概念、核心组件以及API使用方法。通过阅读这份文档,你可以了解EXT的基本架构,学习如何创建窗口、...

    ext 教材 ext js 教程

    EXT JS 教材和教程的目标是帮助开发者更好地理解和掌握这个框架,从而提升他们的Web开发技能。 EXT JS 中的 MessageBox 是一个非常实用的组件,它用于创建各种类型的对话框,如警告、确认和提示。下面我们将详细...

    Ext4.0教程

    ### Ext4.0教程知识点详解 #### 一、Ext4.0简介与获取 Ext4.0是一款基于JavaScript的开源框架,专为构建交互式的Web应用程序而设计。它提供了丰富的UI组件、数据处理功能以及高性能的图表库。为了开始学习Ext4.0,...

    Ext教程ext2-Ext简易教程

    Ext是一个强大的JavaScript库,专为构建富客户端的Web应用程序而设计。它是一个Ajax框架,意味着它专注于通过异步通信更新用户界面,以提供更流畅、响应更快的用户体验。Ext的核心特性在于其丰富的用户界面组件和...

    EXT中文文档,EXT简明教程(Ajax框架)

    最后,`Ext.pdf`可能是EXT的另一个版本或者扩展主题的教程,PDF格式通常便于离线阅读和打印。这份文档可能包含EXT的进阶主题,如自定义组件、性能优化、无障碍性(Accessibility)支持,以及EXT与其他技术(如PHP、...

Global site tag (gtag.js) - Google Analytics