Extjs里的事件处理,只有继承了Ext.util.Observable类才具有事件功能
1.先看一个简单点的例子
//Extjs里的事件处理,只有继承了Ext.util.Observable类才具有事件功能
Employee = function(){
this.addEvents("test");//注册事件,该事件名字为:test
}
Ext.extend(Employee,Ext.util.Observable);
todo = function(){
alert("event was fired");
}
var em = new Employee();
em.on("test",todo);//将方法绑定到事件test上
em.fireEvent("test");//触发事件test
2.
页面代码:
<input type="button" name="button1" id="button1" value="button1" />
js代码:
todo = function(){
alert("event was fired");
}
//window.onload = function(){}等价于Ext.onReady(function(){});页面加载完后就执行该函数
Ext.onReady(function() {
//返回的button1是Observable的子类,所以具有事件处理功能
var button1 = Ext.get("button1");//返回的Element对象,不等价于document.getElementById("button1")
// var button1 = Ext.getDom("button1");//返回的HTMLElement对象,等价于document.getElementById("button1");
alert(button1.id);//button1
// button1.addListener("click",todo);//addListener与on是一样
// button1.addListener("mouseover",todo);
//通过EventManager来实现
Ext.EventManager.addListener(button1,"click",todo);
Ext.EventManager.addListener(button1,"mouseover",todo);
}
)
3.
todo = function(){
alert(this.id);//此处的this由addListener的第3个参数决定
}
Ext.onReady(function() {
//返回的button1是Observable的子类,所以具有事件处理功能
var button1 = Ext.get("button1");
//先打印出button1,再打印出ext-gen1,刚好与addListener添加的顺序相反
button1.addListener("click",todo,this);//todo函数打印出:ext-gen1
button1.addListener("click",todo,button1);//todo函数打印出:button1
}
)
4.
todo = function(){
alert(this.id);//此处的this由addListener的第3个参数决定
}
Ext.onReady(function(){
var button1 = Ext.get("button1");
//addListener的第4个参数是个配置选项,所以需要用{},有4个配置选项,delay(触发事件多久后执行指定的函数),scope(如果第3个参数设置了,此处可以省),single(事件触发一次后,就被移走,以后再触发该事件无效),buffer(缓存区,也就是多长时间内触发该事件大于1次都认为是1次)
//delay和buffer同时使用时有错误,具体原因还不知道是为什么?
button1.addListener("click",todo,button1,{delay:3000,single:false});//因为button1也属于Observable类的子类,所以查看文档时可以直接查看Observable中的addListener方法
}
)
5.
//window.onload = function(){}等价于Ext.onReady(function(){}); 页面加载完后就执行该函数
Ext.onReady(function(){
alert("ok1");
function AA(){
alert("ok2");
}
}
)
//只会打印出ok1,ok2不会被打印出来。因为页面加载完后会去执行函数function(),但是function()函数里的函数(或叫类)AA则不会去执行的。
Ext.onReady(function(){
alert("ok1");
function AA(){
alert("ok2");
}
new AA();
}
)
//这样ok1和ok2都会被打印出来,因为new AA()去调用了
6.等价写法:
todo = function(){
alert(this.id);//此处的this由addListener的第3个参数决定
}
Ext.onReady(function(){
var button1 = Ext.get("button1");
//第一种写法
// button1.addListener("click",todo,button1);
// button1.addListener("mouseover",todo,button1);
//第二种写法
// button1.on({click:todo,mouseover:todo,scope:button1});
//第三种写法
button1.on(
{
click:{scope:button1,delay:3000,fn:todo},
mouseover:{scope:button1,delay:1000,fn:todo}
}
);
}
)
7.
Ext.onReady(
function(){
alert("ok1");//ok1
AA = function(){
alert("ok2");//ok2
};
//同时定义多个属性和方法
AA.prototype = {
aa:1,
bb:2,
a:function(){
alert("aa");//因为没有调用,所以不会打印出来
},
b:function(){
alert("bb");//因为没有调用,所以不会打印出来
}
}
new AA();
}
)
8.事件处理EventObject
Ext.onReady(function(){
var win = new Ext.Window({
title:'hello',
html:'world',
width:400,
height:300
});
win.show();
//查看Extjs的文档:Ext.Window中的Public Events部分查看到:move : ( Ext.Component this, Number x, Number y ) ,默认3个参数,所以才有得下面函数的c,x,y
win.on("move",moving);
})
moving = function(c,x,y){
alert(c.id);
alert(x);
alert(y);
}
另一个例子:
页面代码:
<a href="http://www.baidu.com" id="baidu">百度</a>
js代码:
//事件处理EventObject
todo = function(e){//EventObject,在这里可以理解为:EventObject是HTMLElement对象的click事件的默认参数
alert(this.id);//baidu
var htmlEl = e.getTarget();//返回值是HTMLElement,得到事件触发的目标,这里也就是指<A>连接标签
alert(htmlEl.innerText);//打印出:"百度" (HTMLElement有innerHTML和innnerText方法。 Element没有)
e.stopEvent();//阻止事件继续发生,也就是<A>标签不会跳转到baidu页面了
//获得实际传递参数值
alert(arguments.length);//3
alert(arguments[2].aa);//test
alert(arguments[2]["aa"]);//test
}
Ext.onReady(
function(){
var baidu = Ext.get("baidu");
baidu.on("click",todo,baidu,{aa:'test'});
}
)
分享到:
相关推荐
ExtJS是一种基于JavaScript的开源富客户端框架,特别适用于构建企业级的Web应用程序。...文档《ExtJs2.0学习系列.doc》应包含了关于这些主题的详细教程和示例,是学习ExtJS 2.0不可或缺的参考资料。
在深入探讨ExtJs2.0的具体知识点之前,需要明确ExtJs2.0中文手册的主要内容涵盖了框架的安装、配置、组件使用方法、事件处理、数据管理以及高级应用开发等方面。 首先,ExtJs2.0中文手册应该会介绍如何安装和配置...
在事件处理方面,ExtJS 2.0支持丰富的事件监听和触发机制。智能提示不仅会列出可绑定的事件,还会展示事件处理函数的参数和返回值信息,使得事件处理的编写更加高效和准确。 同时,ExtJS 2.0还提供了大量的组件和小...
8. **事件系统**:EXTJS 2.0拥有强大的事件驱动模型,组件间通过事件进行通信,使得代码结构清晰,易于维护。研究源码可以学习到如何有效地利用事件系统来设计应用程序。 9. **国际化支持**:EXTJS 2.0支持多语言,...
10. **API文档**:"ExtJS2.0实用简明教程.chm"中详细介绍了2.0版本的API,包括各个组件、方法和事件,是学习和开发的重要参考资料。 在实际开发中,通过阅读并实践这本教程,你可以了解到如何初始化一个ExtJS应用,...
API(Application Programming Interface)文档详细列出了框架提供的各种类、方法、属性和事件,帮助开发者了解如何使用这些功能来创建自定义组件、管理用户交互、处理数据和响应系统事件。通过查阅API,开发者可以...
1. **ExtJS基本概念**:首先,你需要了解ExtJS的基本架构,包括其组件模型、事件处理机制以及如何通过MVC模式组织代码。这将帮助你理解如何在网页中创建和管理各种用户界面元素。 2. **组件库**:ExtJS 2.0提供了...
这个"ExtJS2.0中文API珍藏版"提供了一套完整的文档,使开发者能够更方便地理解和使用ExtJS 2.0版本的功能。API(Application Programming Interface)是软件开发中的一个重要概念,它定义了开发者如何与库或框架进行...
本教程主要聚焦于ExtJS 2.0版本的核心API,帮助开发者深入理解和运用这个框架。 **一、ExtJS基本概念** 1. **组件(Components)**: ExtJS的核心是其组件系统,包括按钮、表格、面板、窗口等,这些组件构建了整个...
1. **ExtjsOOP基础**:Ext.js在2.0版本中加强了对面向对象编程的支持,文档中会介绍如何定义JavaScript类,以及如何使用Extjs命名空间和类的继承。这里也会提到Extjs的OOP特性和配置选项的使用方法。 2. **消息框的...
EXTJS 2.0 是一个历史悠久的JavaScript框架,由Sencha公司开发,它以其强大的组件化、可定制性和丰富的用户界面而闻名。这个版本包含了17套不同的主题皮肤,为开发者提供了更多的选择来满足不同项目的需求,使得应用...
EXTJS 2.0进一步优化了组件间的通信和协同,使得布局管理和事件处理更加便捷。 2. **布局管理**:EXTJS 2.0 提供了多种内置布局,如Fit布局、Border布局、Form布局等,可满足不同场景的需求。布局管理器会自动调整...
9. **事件处理**:ExtJS采用事件驱动的编程模式,允许组件之间通过事件进行通信。理解和使用事件监听器是理解ExtJS工作原理的关键。 10. **皮肤和主题**:ExtJS 2.0支持更换皮肤,可以通过修改CSS样式来改变应用的...
教程首先会引导你了解EXTJS2.0的基本概念,包括MVC架构、事件处理机制以及数据绑定。MVC模式是EXTJS的核心,它将应用程序分为Model(模型)、View(视图)和Controller(控制器)三个部分,便于管理和维护复杂的逻辑...
"深入浅出ExtJS随书源码--EXTJS2.0"是针对ExtJS 2.0版本的学习资源,通常与一本相关书籍配套,帮助读者通过实际代码加深对ExtJS的理解。 源码分析: 1. **组件系统**:ExtJS的核心是其组件模型,其中包括各种可...
**ExtJS 2.0 实用简明教程** ExtJS 是一个开源的JavaScript库,专为构建富客户端Web应用程序而设计。2.0版本在当时是ExtJS的一个重要里程碑,引入了许多新特性、改进和优化,使其在企业级应用开发中更加受欢迎。本...
"ExtJS2.0实用简明教程(chm)文档"可能是这个压缩包中的主要资源,它提供了一个深入学习ExtJS 2.0的指南。CHM文件是Microsoft的 Compiled HTML Help 格式,通常包含一系列组织良好的网页,便于用户查阅和学习。这个...
`ExtJS2.0教程.chm`:这是一个帮助文件,通常用于提供详细的教程和API参考,帮助开发者了解ExtJS 2.0的各种组件、布局、数据绑定以及事件处理等。在chm文件中,用户可以查找函数、类和方法的用法,学习如何创建用户...
在"ExtJS2.0管理后台框架"中,开发者利用ExtJS的功能,构建了一个完整的后端管理系统的基础架构。这个框架可能包括了用户界面组件、数据管理、交互逻辑等多个关键部分。 首先,让我们深入了解ExtJS的核心特性。...
在这款"ExtJs2.0电子教程"中,你将深入了解到ExtJS 2.0版本的核心特性和使用方法。作为首款中文教程,它为国内开发者提供了宝贵的资源,帮助他们快速上手并掌握这一强大的前端技术。 首先,ExtJS 2.0在组件化方面...