`
maxwell_hu
  • 浏览: 7905 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

问一个关于Ext中事件处理的问题

    博客分类:
  • web
阅读更多
Ext中给某个元素添加一个事件可以用 xxx.on(eventName,handler) 的方法,我想问一下要是我想传参数给处理函数handler该怎么做?
比如我给一个按钮添加一个click事件,点击显示字符串str:

Ext.onReady(
	function(){
		var myBtn = new Ext.Button(Ext.get('myBtn'),{text:'Hello'});
		var str = "hello world!";
		myBtn.on('click',show);
});

var show = function(){
	//alert();
};
分享到:
评论
4 楼 maxwell_hu 2007-04-10  
thanks to melin and sp42 
sp42 especial
3 楼 sp42 2007-04-10  
或者用EXT内建的方法createDelegate(),如
//登记事件
obj.on('event',eventhandler(a,b..).createDelegate())
createDelegate()要求的是function类型
2 楼 sp42 2007-04-10  
//event hander here
function eventhandler(arg){
return function(){
   //这里的arg还可以继续用
   //do sth.
}
}
//登记事件
obj.on('event',eventhandler(a,b...))
1 楼 melin 2007-04-10  
Custom Args are slightly different
function onClick(e, target, options){
   alert(options.foo);
}
el.on('click', this.onClick, this, {foo: 'wtf'});

Note: In the new version, all events will be normalized by default (unlike now). Although the example below sets normalized to false, I really can't imagine anywhere you would want to do this in real code and it would only be there for backwards compatibility. Also, in the new version, you do not have to keep track of "wrappedFn" in order to remove normalized listeners. It handles this automatically.
Because I am lazy, all the examples below use the shorthanded "on()". Wink
Standard YUI Handlers
Current:
el.addListener('click', this.onClick, this, true);
el.on('click', this.onClick, this, true);
New:
el.on('click', this.onClick, this, {normalized: false}); <-- just for backwards compat

Ext Normalized Events
Current:
el.addManagedListener('click', this.onClick, this, true);
el.mon('click', this.onClick, this, true);
New:
el.on('click', this.onClick, this);

Delayed Listeners (delayed event firing)
Current:
el.delayedListener('click', this.onClick, this, true, 250);
New:
el.on('click', this.onClick, this, {delay: 250});

Buffered Listeners (buffers an event so it only fires once in the defined interval).
Current:
el.bufferedListener('click', this.onClick, this, 100);
New:
el.on('click', this.onClick, this, {buffer: 100});

"Handler" Listeners (prevents default and optionally stops propagation).
Current:
// prevent default
el.addHandler('click', false, this.onClick, this, true);
// prevent default and stop propagation
el.addHandler('click', true, this.onClick, this, true);
New:
// prevent default
el.on('click', this.onClick, this, {preventDefault: true});
// prevent default and stop propagation
el.on('click', this.onClick, this, {stopEvent: true});
// only stop propagation (not supported before)
el.on('click', this.onClick, this, {stopPropagation: true});

New Options
I was able to add the following options without additional functions and keeping the API clean. This is really the best part about the new syntax.
One time listeners removed automatically after the first fire:
el.on('click', this.onClick, this, {single: true});
Automatic event delegation!
el.on('click', this.onClick, this, {delegate: 'li.some-class'});

Combining Options
Using this new syntax, it would also be possible to combine different types of listeners:
// a normalized, delayed, one-time listener that auto stops the event and passes a custom argument (forumId)
el.on('click', this.onClick, this, {
   single: true,
   delay: 100,
   stopEvent : true,
    forumId: 4
});

Attaching multiple handlers in 1 call
This also opens the door for attaching multiple listeners in one shot, which I really wanted:
el.on({
   'click' : {
       fn: this.onClick
      scope: this,
      delay: 100
    },
   'mouseover' : {
       fn: this.onMouseOver
      scope: this
    },
   'mouseout' : {
       fn: this.onMouseOut
      scope: this
    }
});
Or a shorthand syntax:
el.on({
   'click' : this.onClick,
   'mouseover' : this.onMouseOver,
   'mouseout' : this.onMouseOut
   scope: this
});
Observable
        This new syntax is also supported by Observable. In an effort to clean up the code, all legacy YUI CustomEvent objects (e.g. splitter.onMoved.subscribe(...)) have finally been removed (they were deprecated long ago). If you are using the old deprecated events, your code will break (sorry).
        Observable no longer uses YUI CustomEvent object. It uses Ext.util.Event, a new class similar to CustomEvent, but that supports the new syntax, is lightweight and significantly faster. The latest release of YUI included a dual logic in CustomEvent (FLAT/LIST) that slowed it down. There's also a bunch of logic in the CustomEvent constructor that makes them slow to create. Removing them gave a noticeable improvement (there are a lot of events, so any improvement is noticeable).
Component Support
The multi event attachment is also supported by Ext components:
grid.on({
   rowclick : function(...){
       // do something
   },
   
   rowcontextmenu : function(){
       // do something else
   },
   
   scope: someObject,
   arg: someArgument
});

相关推荐

    EXT dojochina Ext事件.rar

    EXT dojochina Ext事件是JavaScript库EXT JS中的一个重要概念,EXT JS是一个强大的前端开发框架,主要用于构建桌面级Web应用程序。这个压缩包可能包含了关于EXT JS事件处理的详细资料,特别是针对中国开发者...

    解决Ext Grid中文排序问题

    在EXT JS框架中,Ext Grid是一个非常常用的组件,用于展示数据并支持各种操作,如排序、筛选和分页。然而,默认情况下,EXT Grid遵循ASCII码排序规则,这在处理中文字符时可能导致排序不符合预期,因为中文字符的...

    EXT checkbox 的 check 事件

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

    Ext2.0.2经典的一个JS组件带EXT中文手册.rar

    这个"Ext2.0.2经典的一个JS组件带EXT中文手册.rar"文件包含了该版本的ExtJS组件和相关的中文文档,帮助开发者更好地理解和使用这个框架。 1. **EXT中文手册**: 提供的`EXT 中文手册.doc`是ExtJS的中文文档,这...

    EXT动态新增一行

    在Column Layout中,动态新增一行意味着在已有列的基础上增加一个新的行单元格,这些单元格会按照列的配置自动填充。 实现动态新增一行的核心步骤如下: 1. **创建基础结构**:首先,你需要定义一个EXT容器,设置...

    Ext2.0 中文文档

    EXT2.0的学习路径建议从基本的Element操作和事件处理开始,逐步掌握Widgets的使用,然后深入到Ajax和数据管理,最后研究源码以提升对EXT框架的整体理解。通过实践和查阅相关资源,如推荐的中文网站和书籍,可以加快...

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

    如何合理地规划一个应用程序 如何本地化ext的教程 xtype的含义 扩展Ext中的组件 扩展与插件之间的区别 扩展Ext的新手教程 Ext的类继承 从源码生成Ext 基础用法: DomQuery基础 Ext中的事件 简述模板 模板...

    Ext 中文文档 经典

    "经典的Ext例子"这部分可能包含了各种使用ExtJS编写的示例代码,这些示例通常涵盖了从基础到高级的各种功能,包括组件的使用、数据绑定、事件处理、布局管理等。通过这些实例,初学者可以直观地理解如何在实际项目中...

    EXT 的一个例子lookup

    3. **联动效果**: 在EXT 中,`lookup`往往涉及到组件之间的联动交互,比如一个ComboBox的选择会影响另一个ComboBox或Grid的数据。 4. **异步数据加载**: 当处理`lookup`时,EXT 经常需要从服务器异步获取数据。这...

    ext 中文源代码

    在提供的“ext2中文文档新春版”中,很可能是EXT2版本的相关文档,EXT2是EXT的一个早期版本,可能包含了详细的API文档、教程和示例代码,帮助开发者理解EXT的基本用法和内部机制。通过阅读这些文档,开发者可以了解...

    Ext 中文帮助文档

    Ext 是一个广泛使用的JavaScript库,主要用于构建富客户端的Web应用程序。它提供了丰富的用户界面组件和数据绑定机制,使得开发者能够创建功能强大、交互性强的网页应用。本篇将基于"Ext 中文帮助文档"深入探讨Ext的...

    ext 3.0中文API

    在EXT 3.0中文文档.CHM文件中,开发者可以找到关于EXT组件、布局、数据绑定、AJAX通信、事件处理等方面的详细信息。这个CHM文件通常包含一个索引和搜索功能,使得查找特定API或概念变得更加便捷。通过深入学习和理解...

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

    总的来说,EXT作为一个强大的前端框架,其教程和API的学习对于想要从事富客户端Web开发的程序员至关重要。通过深入学习EXT,不仅可以提高开发效率,还能为用户提供更为优质、流畅的交互体验。在实际项目中,EXT常常...

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

    在提供的资源中,我们可以看到一系列关于EXT的学习资料,涵盖了从入门到精通的各个阶段: 1. **EXT 中文手册**:这是EXT的官方中文文档,包含了EXT框架的基本概念、API参考、示例代码以及最佳实践。通过阅读这本...

    EXT中文教程

    EXT2是EXT框架的一个重要版本,引入了许多新的组件和特性,如DataView、XTemplate等,进一步增强了框架的能力。 总之,EXT框架为Web开发提供了强大的工具集,涵盖了从DOM操作、事件处理到高级组件和布局管理的...

    Ext3.2中文API

    Ext中文API Ext3.2中文API ExtAPI Ext中文Ext中文API Ext3.2中文API ExtAPI Ext中文Ext中文API Ext3.2中文API ExtAPI Ext中文

    ext中文教程 ext API

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

    ext.net常见问题收集

    在EXT.NET框架中,开发人员经常遇到各种问题,这些问题涵盖了组件的使用、事件处理和数据交互等方面。以下是一些常见的EXT.NET问题及其解决方案: 1. **在窗口中嵌入网页**: 当需要在一个EXT.NET的`Window`组件中...

    ext4.0中文文档

    EXTJS文档则是关于EXT JavaScript库的相关资料,它是一个用于构建桌面级Web应用的富客户端框架,与EXT4文件系统本身并无直接关联,但可能在构建基于EXT4的管理界面时有所帮助。 总之,EXT4.0中文文档是理解、管理和...

Global site tag (gtag.js) - Google Analytics