`
天空之城
  • 浏览: 402965 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

扩展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处理方法 函数的...

    EXT2.3+EXT2.0教程

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

    EXTjs2.0 教程 包括《EXT2.0简明教程》和《ext基础教程》两份教材

    总之,EXTjs2.0教程为开发者提供了全面了解和掌握EXTjs2.0的途径,无论是新手还是有经验的开发者,都可以从中获益,提升前端开发技能。通过深入学习这两份教程,开发者可以有效地利用EXTjs构建出强大、美观且高效的...

    Ext 教程详解 适

    本教程是针对初学者设计的,旨在帮助新手快速入门EXT,为后续深入学习打下坚实基础。 EXT中文手册是学习EXT的重要资源,包含了EXT的基础知识、组件使用、Ajax通信以及源码分析等内容,虽然内容可能来源于网络,但对...

    EXT官方网站的中文教程

    EXT 中文教程对于初学者来说是一份非常实用的资源,它可以帮助新手快速理解和掌握 EXTJS 的基本概念和使用方法。以下是一些主要的知识点: 1. **EXT 简介**: EXT 提供了一个完整的客户端应用开发模型,它基于组件...

    我的Ext超级简单教程

    【标题】"我的Ext超级简单教程" 这篇教程主要聚焦于ExtJS这个JavaScript库的使用,旨在为初学者提供一个快速入门的平台。ExtJS是一个强大的前端框架,它提供了丰富的组件库,可以用来构建复杂的Web应用程序。它以...

    Ext2中文教程-(dojo china)

    **EXT2中文教程——深入理解Linux文件系统** EXT2,全称Second Extended File System,是Linux操作系统中的一个经典文件系统...因此,无论你是Linux新手还是经验丰富的开发者,EXT2中文教程都将是一份宝贵的参考资料。

    EXT 中文手册 用实例来说话

    总的来说,这份手册是一个全面了解和学习EXTJS的好资源,无论你是前端开发的新手还是希望提升EXTJS技能的开发者,都能从中受益匪浅。通过阅读并实践手册中的实例,你将能够熟练运用EXTJS构建高效、美观且功能强大的...

    gwtext学习三部曲

    gwtext是Google Web Toolkit (GWT) 的一个扩展库,提供了丰富的用户界面组件和样式,使得在GWT平台上构建复杂的Web应用变得更加便捷。GWT Ext则是gwtext的核心部分,基于Ext JS库,为GWT提供了更多的UI组件和功能。 ...

    ext培训文档doc

    在EXT培训文档中,新手将了解到EXT的基本概念和核心特性。以下是一些关键知识点: 1. **EXT组件模型**:EXT的核心是其组件模型,包括各种可复用的UI组件,如表格、表单、树形视图、面板、窗口等。这些组件都具有...

    EXT IDE,方便的EXT开发工具

    EXT IDE的使用不仅限于新手,经验丰富的EXT开发者也能从中受益。通过提供一个统一的工作环境,EXT IDE降低了开发复杂性,使开发者能更专注于EXT应用的设计和实现,而不是琐碎的配置和构建过程。对于那些希望提升EXT...

    Ext 3.0 正式版 插件大全

    EXT 3.0 正式版插件大全是EXT JS框架的一个重要组成部分,EXT JS是一个广泛使用的JavaScript库,专门用于构建富互联网应用程序(RIA)。...无论是对新手还是经验丰富的EXT JS开发者来说,这些插件都是不可或缺的工具。

    EXT3.0中文文档

    由于EXT3是开源的,文档可能还会包含源代码分析、开发接口(API)的详细说明,供开发者深入了解EXT3的工作原理并进行扩展或定制。通过阅读这份中文文档,无论是新手还是经验丰富的Linux用户,都能深入理解EXT3的运作...

    ext js中文开发手册

    总之,《EXT JS中文开发手册》是一本全面覆盖EXT JS基础知识和进阶技巧的指南,无论是新手还是有经验的开发者,都能从中获得有价值的指导和启发。通过深入学习和实践,你将能够利用EXT JS构建出高性能、高可维护性的...

    ext学习文档

    - **完成**: 总结了扩展EXT组件的过程。 #### 8. EXT的布局(Layout) - **简单的例子**: 展示了如何使用EXT的布局管理器来组织UI元素。 - **加入内容**: 介绍了如何向布局中添加内容。 #### 9. 开始使用Grid - **...

    Ext JS 3.2.1

    Ext JS 是一个强大的JavaScript库,专门用于构建富客户端Web应用程序。3.2.1 版本是该库的一个里程碑,提供了丰富的用户...无论你是新手还是有经验的开发者,Ext JS 3.2.1 都将为你提供丰富的资源和强大的功能支持。

    EXT_JS实例,官方实例

    这些组件具有丰富的可定制性和可扩展性,可以满足不同类型的界面需求。 2. **布局管理**:EXT JS的布局管理器允许开发者轻松地组织和调整组件的布局,如Fit布局、Border布局、FormLayout等。这些布局方式可以帮助你...

Global site tag (gtag.js) - Google Analytics