`

(Ext)Ext事件的处理

 
阅读更多

Ext事件的处理

在Javascript中,你将不得不经常进行事件的处理。这有时很难顺利进行,因为你需要进行不同的跨浏览器标准化事件处理。而ExtJs使得处理事件变得非常容易,有时候甚至还富于乐趣(!)。

非常基础的例子

想象一下这样一个例子,当用户点击一个链接时,你想向他显示一则警告信息。请继续往下看,因为在开始处理事件前你也许想知道更多。

var el = Ext.get('somelink');
el.on('click', function(){
alert('you click on a link');
});

注意,在这里我们使用了一个匿名处理函数。另外,你应该在DOM初始化后才执行上述代码(使用Ext.onReady()方法)

处理函数的作用域

好了,我们刚刚学习了最基础的事件处理。让我们看看其他一些我们能做的事。默认情况下,处理函数内的作用域是你绑定事件的元素。

var el = Ext.get('somelink');
el.on('click', function(){
alert(this.id); // 这里将显示'somelink'
});

注意this不是Ext Element对象。如果你想使用Ext的方法你必须使用"var el = Ext.get(this);"

但如果我们想要改变处理函数内的作用域呢?你可以把那个对象作为作用域参数。

function onClick = function(){
alert(this.someProperty); // 这里将显示'someValue'
};

var scope = {
someProperty : 'someValue'
}

var el = Ext.get('somelink');
el.on('click', onClick, scope);

提示:更多关于作用域的信息请参见这里

传递参数

在前面的例子中我们看到了如何改变处理函数内的作用域。但如果我们仍然想访问(与之相绑定的)元素呢?我们可以使用传递给处理函数的参数来进行操作。

function onClick = function(ev, target){
alert(this.someProperty); // 这里将显示'someValue'
alert(target.id); // 这里将显示'somelink'
};

var scope = {
someProperty : 'someValue'
}

var el = Ext.get('somelink');
el.on('click', onClick, scope);

如你所见,在这个例子中我们使用了第二个参数(target)。第一个参数是Ext Event对象,我们可以使用此对象来做很多事情。

使用事件

传递到事件处理器的Ext的事件对象有多个方便的属性和方法,下面有几个例子:

onClick = function(ev, target){
ev.preventDefault(); // 阻止浏览器对事件的默认处理行为
ev.stopPropagation(); // 阻止事件的传播
ev.stopEvent() // preventDefault + stopPropagation

var target = ev.getTarget() // 取得事件的目标 (和参数target是一样的),返回的是一个Ext,Element对象
var relTarget = ev.getRelatedTarget(); // 取得相关的目标;

想知道更多关于EventObject的用法,请参考文档

事件参数

事件有很多可配置的参数,下面给出一个例子:

Delayed Listeners (delayed event firing)

el.on('click', this.onClick, this, {delay: 250});

Buffered Listeners (buffers an event so it only fires once in the defined interval)

el.on('click', this.onClick, this, {buffer: 100});

"Handler" Listeners (prevents default and optionally stops propagation)

// prevent default
el.on('click', this.onClick, this, {preventDefault: true});

// only stop propagation
el.on('click', this.onClick, this, {stopPropagation: true});

// prevent default and stop propagation
el.on('click', this.onClick, this, {stopEvent: true});

Other options

el.on('click', this.onClick, this, {
single: true, // removed automatically after the first fire:
delegate: 'li.some-class' // Automatic event delegation!
});

自定义的参数

你也可以传递自定义的参数到事件处理器。当你想在事件处理代码内部使用一个变量,而不想改变作用域的时候这个功能就很有用了。要这样做基本上你只要将自定义参数添加到options对象就行了,请看下面的例子。

function onClick(ev, target, options){
alert(options.someProperty); // alerts 'someValue'
}

var el = Ext.get('somelink');
el.on('click', onClick, null, {someProperty: 'someValue'});

添加多个事件处理器

如果你想在一个元素上添加多个事件处理器可以这样一次搞定。

el.on({
'click' : {
fn: this.onClick,
scope: this,
delay: 100
},
'mouseover' : {
fn: this.onMouseOver,
scope: this
},
'mouseout' : {
fn: this.onMouseOut,
scope: this
}
});

总结

正如你看到的,Ext提供了很多功能使得你可以更容易处理事件。这篇文章我们讨论的所有基本的内容,如果你想学习更多,看看这个 the forum post by Jack Slocum.

分享到:
评论

相关推荐

    EXT dojochina Ext事件.rar

    这使得在组件树中处理事件变得更加灵活。 5. **事件委托** 事件委托是一种优化性能的策略,通过在父容器上设置一个监听器,处理所有子元素的事件,而不是为每个子元素单独设置监听器。EXT JS提供了`delegate`配置项...

    EXT checkbox 的 check 事件

    EXTjs2 的treeNode 带有checkbox,可是API中,关于checkbox的事件就只有一个checkchange事件,所以写个方法传上来。

    ext3.jar ext使用非常多

    在实际项目中,开发者可以通过Maven或者Gradle等构建工具将EXT3.jar作为依赖引入,然后在Java代码中创建EXT组件并进行事件绑定,实现业务逻辑。 在网站开发中,EXT框架的使用可以提供强大的用户界面,例如,通过EXT...

    Windows读取Ext4分区的工具 Ext2Read

    Ext2Read能够识别和处理配置了LVM2的Linux系统,使得用户能访问LVM2中的EXT分区。 4. **EXT4 extent支持**: EXT4引入了extent的概念,以优化大文件的存储,提高性能。Ext2Read能够正确解析EXT4分区中的extent,确保...

    ext下载包,ext,ext包,ext下载

    适配器帮助EXT与不同的DOM操作和事件处理机制进行交互,使得在已有项目中集成EXT变得简单。 EXT还提供了一个强大的数据包,支持数据绑定和远程数据源的交互。这使得EXT组件能够动态地显示和操作来自服务器的数据,...

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

    Ext中的事件 简述模板 模板(Templates)的函数 教你创建Ext UI控件 事件的处理 Ext中的继承 Ext的类设计 Ajax通讯 JSON处理方法 函数的原型扩展 组件的使用: Tab标签页 Ext 1.x中的布局 Grid组件初学 Grid的...

    Windows 7下使用Ext2Fsd读取写入Linux Ext3&Ext4分区文件

    本文将详细介绍如何在Windows 7环境下使用Ext2Fsd来处理Linux Ext3和Ext4分区。 **Ext2Fsd是什么?** Ext2Fsd(Extended File System for Windows)是一款免费的开源软件,它为Windows提供了对Linux Ext2、Ext3和...

    ext学习资料 20篇详细学习笔记 初学者ext学习的文档

    了解如何绑定事件处理器和编写事件处理函数是EXT编程的重要技能。 5. **EXT JS API**:深入学习EXT的API文档至关重要。EXT提供了大量的类和方法,掌握它们将使你能够灵活地构建应用。例如,了解Store类用于管理数据...

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

    它们可能包括创建EXT应用的基本步骤、组件的使用方法、事件处理和响应机制等,是学习EXT的基础教材。 3. **EXT 中文帮助手册**:这是一份详细的辅助学习材料,可能包含EXT框架的高级特性,如AJAX通信、图表组件、...

    EXT 控件拖动例子

    这个接口包含了拖放所需的所有基本功能,包括鼠标事件处理、拖动过程中的视觉反馈和目标检测等。在EXTJS 中,控件(如面板、按钮等)可以通过扩展这个接口或者使用已封装好的`Ext.dd.DD`和`Ext.dd.DDProxy`类来实现...

    ext_教程 (ext 相 关)

    通过阅读这份文档,你可以了解EXT的基本架构,学习如何创建窗口、面板、表单等常用UI元素,以及如何管理布局、处理事件和数据绑定。 EXT学习文档是进一步深入EXT的重要资料。文档中可能涵盖了EXT的高级特性,如数据...

    EXT2.3+EXT2.0教程

    手册通常会详细介绍EXT的安装步骤、基本概念、组件使用方法以及事件处理等核心内容。通过阅读这份手册,新手可以理解EXT的架构,学习如何创建窗口、面板、表格等基本组件,以及如何通过布局管理器来组织这些组件。 ...

    EXT3.0 登录实例

    4. **事件监听与处理**:EXT3.0使用事件驱动模型,登录按钮的点击事件通常会触发一个函数,该函数负责收集表单数据,可能还会进行简单的客户端验证,然后使用Ajax技术向服务器发送POST请求。 5. **Ajax通信**:EXT...

    ext4_utils

    这个工具集专注于处理ext4文件系统,一种广泛用于Linux内核的高性能日志文件系统。本文将详细探讨ext4_utils的原理、功能及在三星线刷ROM制作过程中的应用。 一、ext4文件系统概述 ext4是Linux系统的第四代扩展...

    ext JS 源码和学习资料

    通过阅读源码,开发者可以了解到EXT JS如何实现组件化、事件处理、数据绑定等功能,进一步优化自己的代码结构和性能。例如,ext-3.x版本的源码中,`Ext.lib.Component`是所有组件的基类,而`Ext.container.Container...

    EXT dojochina Ext类静态方法.rar

    4. **静态方法的使用场景**:EXT的静态方法广泛应用于初始化配置、创建组件、处理数据和事件绑定等。例如,`Ext.onReady`是一个静态方法,它会在DOM加载完成时执行回调函数,常用于初始化应用。 5. **dojochina社区...

    EXT学习心得,ext

    在EXT中,下拉框(ComboBox)的事件处理可以通过`on`方法绑定事件监听器。例如,当`bankFullName`下拉框发生改变时,触发`Ext.getCmp('bankTypeCd').setValue(Ext.getCmp('bankFullName').getValue());`,这使得`...

    ext 下拉树 ext2

    在实际使用中,开发人员会结合这些文件,通过编写JavaScript代码来配置和定制下拉树的行为,如设置异步加载数据的URL,定义节点的显示样式,处理用户交互事件等。同时,CSS样式可能也被用来调整下拉树的外观,使其...

    EXT安装包4.2.1-1

    7. **高级布局管理**:EXT的布局管理器可以处理复杂的页面布局,如网格布局、流式布局、卡片布局等,使得开发者可以轻松调整组件的位置和大小。 8. **主题和皮肤**:EXT允许自定义主题和皮肤,可以轻松改变应用程序...

Global site tag (gtag.js) - Google Analytics