`

第三篇 Ext的事件机制

    博客分类:
  • Ext
阅读更多

js的事件主要分为两类:浏览器事件和自定义事件

A.先看看Ext是如何自定义事件的

第一步:定义一个自定义"类"(js没有类的概念),添加属性、方法和事件

var Person = function(name,age){

    //属性   

    this.name = name;

    this.age = age;

    //方法   

    this.eat:function(){

 

    }

    //添加事件

    this.addEvents('walk','eat');

};

第二步:让类继承Ext.Observable(定义了一些基本的事件机制),为对象添加事件监听

    Ext.extend(Person,Ext.util.Observable,{扩展的属性和方法});

    var p = new Person('rzy',20);

    p.on('eat',function(e,el,args){},scope,args);

第三步:触发对象的事件

    p.fireEvent('事件名',参数列表...);

完整的代码:

var Person = function(name,age){
    this.name = name;
    this.age = age;
    this.eat:function(){

    }
    this.addEvents('walk','eat');
};
Ext.extend(Person,Ext.util.Observable,{扩展的属性和方法}); 
var p = new Person('rzy',20);
p.on('eat',function(){},scope,args);
p.fireEvent('事件名',参数列表...);

 B.再来看看浏览器事件(onclick,onmouseover,oncontextmenu,onkeyup...)

 举一个例子吧

<html>    
    <head>    
        <link type="text/css" rel="stylesheet" href="extjs/resource/css/ext-all.css"/>   
        <script type="text/javascript" src="extjs/adapter/ext/ext-base.js"></script>    
        <script type="text/javascript" src="extjs/ext-all.js"></script>       
        <script type="text/javascript">    
            var fn = function(){   
                Ext.get('btn').on('click',function(e,btn){
                    alert('事件机制');
                },this,args);
            };    
            Ext.onReady(fn);    
        </script>    
    </head>    
    <body>  
        <input id="btn" type="button" value="点我"/> 
    </body>    
</html>   

 接下来,关键的时候到了。现在来看看原生js的事件机制吧,这有助于你学习任何js框架(主要是解决跨浏览器的问题)

首先看看原生js如何为对象附加浏览器事件吧(以IE和FF为例)

  IE:obj.attachEvent('onclick',function(){});

  FF:obj.addEventListner('click',function(){},false);

  在这里提一下事件对象event

  IE:是作为一个全局变量window.event

  FF:当事件触发时,必须显示的作为第一个参数来传递

  Ext:EventObject

举一个例子吧

<html>       
    <head>       
       <link type="text/css" rel="stylesheet" href="extjs/resource/css/ext-all.css"/>      
        <script type="text/javascript" src="extjs/adapter/ext/ext-base.js"></script>       
        <script type="text/javascript" src="extjs/ext-all.js"></script>          
        <script type="text/javascript">       
            var ff = function(e){      
                var sender= e?e.target:window.event.srcElement;                
                alert(sender);   
            };  
        </script>       
    </head>       
    <body>     
        <input id="btn" type="button" value="点我" onclick=ff(e);/>
    </body>       
</html> 

   个人不太喜欢上面传统的这种侵入式的事件定义方式,改为注记式

   document.getElementById('btn').onclick = ff;//注意这里绑定的是方法的引用ff,而不是ff();

   但是问题又出现了原生的js只能单一绑定,要再绑定一个点击事件就会覆盖前面的

   该Ext出场了,它可以为元素绑定多个句柄,它是怎么做到的?去看看Ext关于事件机制的这部分源码吧,特别是观察者模式

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    ext面向对象和继承

    这里的`ChildClass`是新创建的子类,`ParentClass`是其父类,第三个参数是子类的额外属性和方法。 **EXTJS的类系统** EXTJS有一个完整的类系统,它基于Sencha的JSClass库。每个EXTJS组件都是一个类的实例,这些类...

    Ext 模仿Excel电子表格

    在Web应用中,我们可以使用JavaScript编写自定义函数,或者利用第三方库如SheetJS (js-xlsx) 来解析和计算Excel公式。 4. **编辑和格式化**:实现单元格的编辑功能,允许用户输入和修改数据。同时,我们需要考虑...

    Ext2 核心 API 中文详解 ExtJS2.0实用简明教程 ExtJS2.0教程 ExtJS2.0实用简明教程(easyjf) ext中文API+ sample

    1. **基础篇**: 介绍ExtJS的基本架构和使用环境,讲解如何创建第一个ExtJS应用。 2. **组件篇**: 详述各组件的使用方法,如窗口、面板、按钮等,以及如何自定义组件。 3. **数据篇**: 深入探讨数据模型、数据存储和...

    ext2.0中文文档

    EXT2.0作为其第二个主要版本,相较于EXT1有着显著的改进,尤其在性能和可靠性方面。这篇中文文档详细介绍了EXT2.0的结构、工作原理以及相关的管理技巧,对于Linux系统的使用者和管理员来说,具有很高的学习和参考...

    ext pop select fields

    7. **工具或插件**: 可能介绍了一些辅助开发的工具,如调试器、代码生成器,或者是增强Ext.field.Select功能的第三方插件。 由于没有具体的博客内容,以上都是基于标题和标签的合理猜测。要获取更具体的信息,你...

    Gwt-Ext基础-中级-进阶

    4. **事件处理**:深入研究Gwt-Ext的事件模型,学习如何监听和响应各种组件事件,以及如何自定义事件。 5. **国际化**:实现Gwt-Ext应用的多语言支持,包括资源文件的配置和语言切换。 在"进阶篇"中,你将接触到更...

    ext3.3正式版发布

    标题中的"ext3.3正式版发布"指的是Linux操作系统中的一种文件系统——EXT3的第三个主要版本的发布。EXT3,全称为“Third Extended Filesystem”,是Linux下的一个日志式文件系统,它在1993年由Rene Rebeau开发,并在...

    读Ext之十五(操作批量元素)

    "读Ext之十五(操作批量元素)"这篇博客文章可能详细讲解了如何在ExtJS中对多个DOM元素进行批量操作,这对于提高代码效率和减少重复工作至关重要。在ExtJS中,处理一组元素时,我们通常会使用CompositeElementLite类...

    Ext4.1.0 API中文版V0.3 Beta

    Ext4是Extended File System系列的第四个主要版本,旨在提高其前一代Ext3的性能、可扩展性和可靠性。它引入了许多新特性,如大文件支持(最大可至16EB)、更大的文件系统(最大64PB)和更多的链接数(最多64000个硬...

    关于EXT分页,分组,排序

    通过调用 `store.load()` 方法来加载数据,其中传入的参数 `{start:0, limit:3}` 表示从第0条数据开始,每次只加载3条数据。 5. **配置 PagingToolbar**: 创建了一个 `PagingToolbar` 组件,并设置了各种属性,...

    Ext.ux.FileSelector

    "ux"是ExtJS中的一个特殊命名空间,用于存放第三方开发的组件和插件。 在Ext.ux.FileSelector中,"FileSelector.js"和"fileSelectorCore.js"是核心脚本文件。"FileSelector.js"通常包含了组件的定义、事件处理和...

    Visual Studio 2008 可扩展性开发3:Add-In运行机制解析(下).doc

    本文是 Visual Studio 2008 可扩展性开发系列的第三篇,主要介绍 Add-In 的事件和生命周期。在上一篇中,我们已经了解了 Add-In 的基本结构和生成代码的过程。现在,我们将深入探讨 Add-In 的事件和生命周期,以便更...

    ext tab

    此外,还有一些第三方工具如EXTJS Debug Wizard,它可以帮助开发者快速定位EXTJS应用中的错误和性能瓶颈。 总的来说,EXTJS的TabPanel组件是构建复杂Web界面的关键部分,而通过源码学习和使用相关工具,开发者可以...

    ExtJS 事件笔记

    - **DOM Level 2式登记**(addEventListener):遵循W3C标准,支持事件捕获和冒泡阶段,可以为同一个事件添加多个处理函数,并通过第三个参数控制事件处理流程。 2. **事件流**: - **IE事件流**:仅支持冒泡模型...

    PyPI 官网下载 | unimatrix.ext.model-0.3.2.tar.gz

    "0.3.2"是版本号,表示这是该库的第三个重大更新,第二次次要更新,并且是第二次修正更新。".tar.gz"则是打包格式,表明这是一个使用tar命令打包并使用gzip压缩的文件,这是在Linux和Unix系统中常见的归档和压缩方式...

    Linux私房菜基础学习篇(第三版) .pdf

    Linux私房菜基础学习篇(第三版)是一本专注于Linux基础知识的教程书籍,旨在帮助读者快速掌握Linux操作系统的基本操作、管理技巧以及相关概念和术语。 本书内容覆盖了Linux操作系统中的众多关键知识点,其中包括但...

    something important

    它可能会涵盖Ext JS的架构、组件模型、事件处理机制等核心概念。 4. **ExtJS实用开发指南.pdf** - 这是另一个关于Ext JS的PDF文件,标题表明它是一本实用的开发指南,可能包含实际开发项目中的技巧、最佳实践和案例...

    鸟哥Linux私房菜

    31. **Hardwaresupport**:在第三章第1.2节中提及。这部分内容讨论了Linux对于各种硬件的支持情况。 32. **hdparm**:在第八章第3.5节中解释。hdparm命令用于测试磁盘性能和显示磁盘参数。 33. **head**:在第七...

Global site tag (gtag.js) - Google Analytics