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.
分享到:
相关推荐
这使得在组件树中处理事件变得更加灵活。 5. **事件委托** 事件委托是一种优化性能的策略,通过在父容器上设置一个监听器,处理所有子元素的事件,而不是为每个子元素单独设置监听器。EXT JS提供了`delegate`配置项...
EXTjs2 的treeNode 带有checkbox,可是API中,关于checkbox的事件就只有一个checkchange事件,所以写个方法传上来。
在实际项目中,开发者可以通过Maven或者Gradle等构建工具将EXT3.jar作为依赖引入,然后在Java代码中创建EXT组件并进行事件绑定,实现业务逻辑。 在网站开发中,EXT框架的使用可以提供强大的用户界面,例如,通过EXT...
Ext2Read能够识别和处理配置了LVM2的Linux系统,使得用户能访问LVM2中的EXT分区。 4. **EXT4 extent支持**: EXT4引入了extent的概念,以优化大文件的存储,提高性能。Ext2Read能够正确解析EXT4分区中的extent,确保...
适配器帮助EXT与不同的DOM操作和事件处理机制进行交互,使得在已有项目中集成EXT变得简单。 EXT还提供了一个强大的数据包,支持数据绑定和远程数据源的交互。这使得EXT组件能够动态地显示和操作来自服务器的数据,...
Ext中的事件 简述模板 模板(Templates)的函数 教你创建Ext UI控件 事件的处理 Ext中的继承 Ext的类设计 Ajax通讯 JSON处理方法 函数的原型扩展 组件的使用: Tab标签页 Ext 1.x中的布局 Grid组件初学 Grid的...
本文将详细介绍如何在Windows 7环境下使用Ext2Fsd来处理Linux Ext3和Ext4分区。 **Ext2Fsd是什么?** Ext2Fsd(Extended File System for Windows)是一款免费的开源软件,它为Windows提供了对Linux Ext2、Ext3和...
了解如何绑定事件处理器和编写事件处理函数是EXT编程的重要技能。 5. **EXT JS API**:深入学习EXT的API文档至关重要。EXT提供了大量的类和方法,掌握它们将使你能够灵活地构建应用。例如,了解Store类用于管理数据...
它们可能包括创建EXT应用的基本步骤、组件的使用方法、事件处理和响应机制等,是学习EXT的基础教材。 3. **EXT 中文帮助手册**:这是一份详细的辅助学习材料,可能包含EXT框架的高级特性,如AJAX通信、图表组件、...
这个接口包含了拖放所需的所有基本功能,包括鼠标事件处理、拖动过程中的视觉反馈和目标检测等。在EXTJS 中,控件(如面板、按钮等)可以通过扩展这个接口或者使用已封装好的`Ext.dd.DD`和`Ext.dd.DDProxy`类来实现...
通过阅读这份文档,你可以了解EXT的基本架构,学习如何创建窗口、面板、表单等常用UI元素,以及如何管理布局、处理事件和数据绑定。 EXT学习文档是进一步深入EXT的重要资料。文档中可能涵盖了EXT的高级特性,如数据...
手册通常会详细介绍EXT的安装步骤、基本概念、组件使用方法以及事件处理等核心内容。通过阅读这份手册,新手可以理解EXT的架构,学习如何创建窗口、面板、表格等基本组件,以及如何通过布局管理器来组织这些组件。 ...
4. **事件监听与处理**:EXT3.0使用事件驱动模型,登录按钮的点击事件通常会触发一个函数,该函数负责收集表单数据,可能还会进行简单的客户端验证,然后使用Ajax技术向服务器发送POST请求。 5. **Ajax通信**:EXT...
这个工具集专注于处理ext4文件系统,一种广泛用于Linux内核的高性能日志文件系统。本文将详细探讨ext4_utils的原理、功能及在三星线刷ROM制作过程中的应用。 一、ext4文件系统概述 ext4是Linux系统的第四代扩展...
通过阅读源码,开发者可以了解到EXT JS如何实现组件化、事件处理、数据绑定等功能,进一步优化自己的代码结构和性能。例如,ext-3.x版本的源码中,`Ext.lib.Component`是所有组件的基类,而`Ext.container.Container...
4. **静态方法的使用场景**:EXT的静态方法广泛应用于初始化配置、创建组件、处理数据和事件绑定等。例如,`Ext.onReady`是一个静态方法,它会在DOM加载完成时执行回调函数,常用于初始化应用。 5. **dojochina社区...
在EXT中,下拉框(ComboBox)的事件处理可以通过`on`方法绑定事件监听器。例如,当`bankFullName`下拉框发生改变时,触发`Ext.getCmp('bankTypeCd').setValue(Ext.getCmp('bankFullName').getValue());`,这使得`...
在实际使用中,开发人员会结合这些文件,通过编写JavaScript代码来配置和定制下拉树的行为,如设置异步加载数据的URL,定义节点的显示样式,处理用户交互事件等。同时,CSS样式可能也被用来调整下拉树的外观,使其...
7. **高级布局管理**:EXT的布局管理器可以处理复杂的页面布局,如网格布局、流式布局、卡片布局等,使得开发者可以轻松调整组件的位置和大小。 8. **主题和皮肤**:EXT允许自定义主题和皮肤,可以轻松改变应用程序...