引自:http://www.cnblogs.com/luluping/archive/2011/11/09/2243768.html
一、addListener方法
- var button = Ext.get('btn');
- button.addListener('click',hello1);//绑定事件处理函数
- button.addListener('click',hello2);
var button = Ext.get('btn'); button.addListener('click',hello1);//绑定事件处理函数 button.addListener('click',hello2);
二、ExtJS支持的自定义事件
- //创建Person类
- var Person = Ext.extend(Ext.util.Observable,{
- constructor : function(name){
- this.name = name;
- this.sayNum = 0;
- this.say = function(){
- if(this.sayNum < 2){
- this.sayNum += 1;
- alert('I am '+name);
- }else{
- this.sayNum = 0;//触发自定义事件后计数器归零
- this.fireEvent('onSay',this);//激发自定义事件
- }
- }
- this.addEvents({//加入自定义事件
- "onSay" : true
- });
- }
- });
- var per = new Person('tom',3);//创建对象
- //为自定义事件绑定处理函数
- per.addListener('onSay',function handler(){
- alert('发生了自定义事件');
- });
//创建Person类 var Person = Ext.extend(Ext.util.Observable,{ constructor : function(name){ this.name = name; this.sayNum = 0; this.say = function(){ if(this.sayNum < 2){ this.sayNum += 1; alert('I am '+name); }else{ this.sayNum = 0;//触发自定义事件后计数器归零 this.fireEvent('onSay',this);//激发自定义事件 } } this.addEvents({//加入自定义事件 "onSay" : true }); } }); var per = new Person('tom',3);//创建对象 //为自定义事件绑定处理函数 per.addListener('onSay',function handler(){ alert('发生了自定义事件'); });
- <input type='button' value='say' onclick='per.say()'>
<input type='button' value='say' onclick='per.say()'>
自定义事件的另外一个例子:
- //继承自Ext.util.Observable
- var Person = Ext.extend(Ext.util.Observable,{
- constructor : function(name){
- this.name = name;
- this.say = function(){
- this.fireEvent('onSay',this.name);//激发自定义事件
- }
- this.addEvents({//加入自定义事件
- "onSay" : true
- });
- }
- });
- var per = new Person('tom');//创建对象
- //为自定义事件绑定处理函数
- per.addListener('onSay',function(name){
- alert("I'am " + name);
- });
//继承自Ext.util.Observable var Person = Ext.extend(Ext.util.Observable,{ constructor : function(name){ this.name = name; this.say = function(){ this.fireEvent('onSay',this.name);//激发自定义事件 } this.addEvents({//加入自定义事件 "onSay" : true }); } }); var per = new Person('tom');//创建对象 //为自定义事件绑定处理函数 per.addListener('onSay',function(name){ alert("I'am " + name); });
拦截器使用示例Observable.capture,与上面例子不同的地方是“var per = new Person('tom');//创建对象”代码之后的内容替换为:
- per.addListener('onSay',handler);//为自定义事件绑定处理函数
- function handler(){//事件处理函数
- alert('发生了自定义事件');
- }
- //为per对象添加拦截器
- Ext.util.Observable.capture(per,captureFunction);
- //拦截函数
- function captureFunction(eventName){
- if(eventName == 'onSay'){//事件名称是onSay则返回false终止事件的执行
- alert("拦截事件:“"+eventName+"”。");
- return false;
- }
- return true;
- }
per.addListener('onSay',handler);//为自定义事件绑定处理函数 function handler(){//事件处理函数 alert('发生了自定义事件'); } //为per对象添加拦截器 Ext.util.Observable.capture(per,captureFunction); //拦截函数 function captureFunction(eventName){ if(eventName == 'onSay'){//事件名称是onSay则返回false终止事件的执行 alert("拦截事件:“"+eventName+"”。"); return false; } return true; }
三、addManagedListener受管事件监听器:
- function createFn(){
- alert('新建');
- }
- function openFn(){
- alert('打开');
- }
- function saveFn(){
- alert('保存');
- }
- Ext.create('Ext.toolbar.Toolbar',{//创建工具栏
- renderTo: Ext.getBody(),
- bodyPadding: 5,
- width:300,
- items : [
- {text:'新建',id:'createBtn',iconCls:'newIcon'},
- {text:'打开',id:'openBtn',iconCls:'openIcon'},
- {text:'保存',id:'saveBtn',iconCls:'saveIcon'},
- {text:'销毁新建按钮',handler : function(){
- //销毁新建按钮
- Ext.getCmp('createBtn').destroy();
- }}
- ]
- });
- var createBtn = Ext.getCmp('createBtn');
- createBtn.on('click',createFn);
- //以下的事件绑定将受createBtn组件是否销毁的控制,如果createBtn组件销毁
- //了则事件绑定同时解除。
- createBtn.addManagedListener(Ext.getCmp('openBtn'),'click',openFn);
- createBtn.addManagedListener(Ext.getCmp('saveBtn'),'click',saveFn);
function createFn(){ alert('新建'); } function openFn(){ alert('打开'); } function saveFn(){ alert('保存'); } Ext.create('Ext.toolbar.Toolbar',{//创建工具栏 renderTo: Ext.getBody(), bodyPadding: 5, width:300, items : [ {text:'新建',id:'createBtn',iconCls:'newIcon'}, {text:'打开',id:'openBtn',iconCls:'openIcon'}, {text:'保存',id:'saveBtn',iconCls:'saveIcon'}, {text:'销毁新建按钮',handler : function(){ //销毁新建按钮 Ext.getCmp('createBtn').destroy(); }} ] }); var createBtn = Ext.getCmp('createBtn'); createBtn.on('click',createFn); //以下的事件绑定将受createBtn组件是否销毁的控制,如果createBtn组件销毁 //了则事件绑定同时解除。 createBtn.addManagedListener(Ext.getCmp('openBtn'),'click',openFn); createBtn.addManagedListener(Ext.getCmp('saveBtn'),'click',saveFn);
四、relayEvents传播分发事件:
- //创建Employee工人类
- var Employee = Ext.extend(Ext.util.Observable,{
- constructor : function(config){
- this.name = config.name;
- this.eat = function(){
- this.fireEvent('startEat',this);//激发开始吃饭事件
- this.fireEvent('finishEat',this);//激发结束吃饭事件
- }
- this.addEvents({//加入自定义事件
- "startEat" : true,//开始吃饭事件
- "finishEat" : true//结束吃饭事件
- });
- Employee.superclass.constructor.call(this, config)
- }
- });
- //定义Waiter服务员类
- var Waiter = Ext.extend(Ext.util.Observable,{
- constructor : function(config){
- Waiter.superclass.constructor.call(this, config);
- }
- });
- //创建员工对象
- var emp = new Employee({name:'tom'});
- //为自定义事件绑定处理函数
- emp.addListener('startEat',function(){
- alert(this.name + '开始吃饭了。');
- });
- emp.addListener('finishEat',function (){
- alert(this.name + '吃完饭,可以收拾盘子了。');
- });
- //创建服务员对象
- var waiter = new Waiter();
- //使服务员对象与员工对象的finishEat事件进行关联
- //也就是说当员工对象的finishEat事件发生后,先执行自身的事件监听器,
- //然后事件会传递到服务员对象中,激发服务员对象的finishEat事件。
- waiter.relayEvents(emp, ['finishEat']);
- waiter.on('finishEat',function(){
- alert('服务员开始收拾盘子。');
- });
//创建Employee工人类 var Employee = Ext.extend(Ext.util.Observable,{ constructor : function(config){ this.name = config.name; this.eat = function(){ this.fireEvent('startEat',this);//激发开始吃饭事件 this.fireEvent('finishEat',this);//激发结束吃饭事件 } this.addEvents({//加入自定义事件 "startEat" : true,//开始吃饭事件 "finishEat" : true//结束吃饭事件 }); Employee.superclass.constructor.call(this, config) } }); //定义Waiter服务员类 var Waiter = Ext.extend(Ext.util.Observable,{ constructor : function(config){ Waiter.superclass.constructor.call(this, config); } }); //创建员工对象 var emp = new Employee({name:'tom'}); //为自定义事件绑定处理函数 emp.addListener('startEat',function(){ alert(this.name + '开始吃饭了。'); }); emp.addListener('finishEat',function (){ alert(this.name + '吃完饭,可以收拾盘子了。'); }); //创建服务员对象 var waiter = new Waiter(); //使服务员对象与员工对象的finishEat事件进行关联 //也就是说当员工对象的finishEat事件发生后,先执行自身的事件监听器, //然后事件会传递到服务员对象中,激发服务员对象的finishEat事件。 waiter.relayEvents(emp, ['finishEat']); waiter.on('finishEat',function(){ alert('服务员开始收拾盘子。'); });
- <input type='button' value='员工吃饭' onclick='emp.eat()'>
<input type='button' value='员工吃饭' onclick='emp.eat()'>
五、Ext.EventObject示例
- var btn = Ext.get('buttonTest');
- btn.addListener('click',handler);//为click事件绑定处理函数
- function handler(e){//事件处理函数
- //获取事件发生时的x坐标
- var x = e.getPageX();
- //获取事件发生时的y坐标
- var y = e.getPageY();
- var msg = '事件发生坐标 : x='+x+' y='+y;
- alert(Ext.EventManager.getPageXY(e));
- alert(msg);
- }
var btn = Ext.get('buttonTest'); btn.addListener('click',handler);//为click事件绑定处理函数 function handler(e){//事件处理函数 //获取事件发生时的x坐标 var x = e.getPageX(); //获取事件发生时的y坐标 var y = e.getPageY(); var msg = '事件发生坐标 : x='+x+' y='+y; alert(Ext.EventManager.getPageXY(e)); alert(msg); }
六、Ext.EventManager使用
- Ext.EventManager.addListener('btn','click',handler);//绑定处理函数
相关推荐
在ExtJs中,事件处理是构建交互式用户界面的关键组成部分。下面将详细解释标题和描述中提到的ExtJs事件处理,以及与Ajax交互的相关知识。 1. **基本事件处理** - 在ExtJs中,可以使用`on`方法来监听DOM元素或Ext...
总结来说,ExtJS4作为ExtJS系列的一个重要版本,不仅增强了组件化、数据管理、事件处理、图表和表单等功能,还在性能和易用性上做了很多改进。对于需要构建复杂、交互性强的Web应用的开发者来说,ExtJS4无疑是一个...
EXTJS4的学习文档还包括更多关于组件、布局、数据绑定、事件处理等方面的详细内容,这些都是构建EXTJS应用不可或缺的知识。通过深入学习和实践,开发者可以熟练掌握EXTJS4,创建功能丰富的Web应用程序。
6. **Ajax和数据管理**:EXTJS4内置了强大的Ajax请求处理和数据管理机制,通过Ext.data.Proxy和Ext.data.Store可以轻松处理远程数据请求和本地数据存储。 7. **可访问性**:EXTJS4注重无障碍性,遵循WCAG 2.0标准,...
这种自定义的行为需要对EXTJS4的事件处理和组件嵌套有深入的理解。 首先,你需要监听ComboBox的`expand`事件,这个事件会在下拉框展开时触发。然后,在事件处理器中,你可以创建一个Grid实例,并设置其数据源。Grid...
ExtJS4提供了一种解决方案,允许用户通过一个交互式的界面来上传多个文件,并可以分别处理每个文件的上传状态。 **三、上传组件:uploadPanel** 在ExtJS4中,可以使用自定义组件或者第三方插件来实现文件上传功能。...
总结来说,"Extjs4 grid使用例子"是一个实践教程,展示了如何在MVC架构下利用ExtJS4的Grid组件处理数据,实现数据的增删改功能。通过这个例子,开发者可以学习到MVC的设计理念,以及如何有效利用Grid组件提升Web应用...
这款图片浏览器利用了ExtJS4的组件化、数据绑定和事件处理等特性,为用户提供了一个交互性强、功能丰富的图片浏览体验。 在实现这个图片浏览器的过程中,开发者可能使用了以下核心ExtJS4组件和技术: 1. **Panel...
6. **事件处理**:EXTJS4的菜单项支持多种事件,如`click`、`mouseover`等。你可以通过监听这些事件来实现交互逻辑。 ```javascript item1.on('click', function() { console.log('菜单项1被点击了'); }); ``` 在...
EXTJS的事件处理主要由EventManager.js这个文件负责,它是EXTJS事件系统的基础。 首先,EXTJS的事件机制基于观察者模式,即事件发布者(Publisher)发出事件,而事件订阅者(Subscriber)监听并响应这些事件。Event...
ExtJS 是一个强大的JavaScript应用程序框架,专用于构建富客户端Web应用。ExtJS 4是其一个重要的版本...在实际项目中,还需要理解MVC架构、布局管理、事件处理、数据绑定等核心概念,以构建出高效、响应式的用户界面。
2. `\extjs-4.x\ext-all.js`:这是ExtJS的核心文件,包含了所有的组件、事件处理和其他核心功能。 3. `\extjs-4.x\locale\ext-lang-zh_CN.js`(如果需要中文支持):这个文件提供了中文语言包,用于将ExtJS的默认...
在"extjs4mvc的crud"这个主题中,我们将深入探讨如何使用ExtJS 4的Model-View-Controller(MVC)架构来实现货物处理的创建(Create)、读取(Read)、更新(Update)和删除(Delete)操作。 首先,了解MVC模式是...
本篇笔记将深入探讨ExtJS的事件处理,包括事件登记、事件对象、this的作用域以及ExtJS特有的事件管理方式。 1. **事件登记**: - **内联式登记**:在HTML元素中直接定义事件处理函数,如`onClick="popUp()"`。这种...
ExtJS4的API文档详细阐述了每个组件的用法、配置项和事件,是开发者解决问题和实现功能的重要参考。 通过深入学习并掌握这些文档,开发者不仅能理解ExtJS4的基础概念,还能熟练地运用到实际项目中,构建出功能丰富...
标签“extjs4”强调了这个系统的开发工具和技术,暗示开发者可能需要对ExtJS 4的类库、组件、数据绑定、事件处理、布局管理等方面有深入理解。 从压缩包文件的名称来看,我们可以推测出项目的不同阶段和一些关键...
这个"extjs4Mvc"事例提供了关于如何在ExtJS 4中有效地利用MVC(Model-View-Controller)设计模式的详细教程。MVC模式是软件工程中常用的设计模式,它有助于保持代码的组织性和可维护性。 在ExtJS 4中,MVC架构被...
在EXTJS4中,实现导出数据到Excel的功能是一项常见的需求,这可以帮助用户方便地处理和存储大量数据。本示例将详细介绍EXTJS4如何实现Excel导出,并提供相关的代码示例。 EXTJS4的核心是其组件模型,包括表格(Grid...
通过监听事件,如`itemclick`、`itemdblclick`,可以处理用户的交互行为,实现报表的进一步操作,如查看详细信息、编辑数据等。 总的来说,ExtJS4 TreeGrid实例的创建涉及模型定义、数据存储、列配置和面板创建等多...
在`itemdblclick`事件处理函数中,`record`参数代表当前被双击的数据记录,`index`参数则是行号。`this.getSelectionModel().getSelection()`则可以获取所有选中的行数据记录。 如果需要在双击时执行特定操作,可以...