ExtJs的事件机制Event(学员总结)
一、事件的三种绑定方式
1、HTML/DHTML
在标签中直接增加属性触发事件
- <script type="text/javascript">
- function hello(){
- alert("hello word");
- }</script>
- <input type="button" id="btn1" value="第一种事件绑定" onClick="hello()">
2、DOM Ext.isIE判断是否是IE浏览器利用document对象获取元素对象并绑定事件
- if(Ext.isIE){
- document.getElementById("btn2").attachEvent("onclick",function(){
- alert("第二种事件绑定方式");
- });
- }else{
- document.getElementById("btn2").addEventListener("click",function(){
- alert("第二种事件绑定方式");
- });
- }
3、ExtJs 利用Ext中的get方式获取元素并调用on方法绑定事件,第一个参数传入为事件类型,第二个是动作
Ext.get("btn3").on("click",function(){
alert("第三种事件绑定方式");
});
二、Ext.util.Observable 事件的基类
概述:它为所有支持事件机制的extjs组件提供事件的支持,如果我们自己创建新的组件需要有事件的支持那么我们就得继承它
事件的分类:
标准事件:键盘按钮按下,鼠标的单机双击,滑过滑动
业务时间:当面盘首期的时候触发,当组件被销毁的时候触发,当每个对象的属性值不为空的时候触发
一个自定义事件的例子:
没有用到事件处理的场景
母亲为孩子饿不饿--->
<--孩子
饿了--->给一瓶牛奶
不饿--->不给
用到事件的场景
母亲给孩子一瓶牛奶-->
孩子拿到牛奶感觉饿了就喝
感觉不饿就不喝
角色功能分析
孩子:应该有自己能拿到牛奶判断饿不饿的方法,当母亲给他牛奶的时候调用这个方法
那么孩子就要有一个业务事件时刻监听着母亲什么时候给自己牛奶
母亲:调用孩子拿牛奶的方法,并且传入一瓶牛奶
代码实现:并测试事件拦截
- Ext.define("children",{
- extend:"Ext.util.Observable",
- //定义构造函数
- constructor:function(){
- this.state="hungry",
- this.setMilk=function(milk){
- //调用事件的动作
- this.fireEvent("hungry",milk);
- },
- //添加一个事件
- this.addEvents({"hungry":true}),
- //注册这个事件
- this.addListener("hungry",function(milk){
- if(this.state=="hungry"){
- this.drink(milk);
- }else{
- alert("我不饿");
- }
- }),
- //定义喝牛奶的方法
- this.drink=function(milk){
- alert("我喝掉了一瓶牛奶:"+milk);
- }
- }
- });
- var children=Ext.create("children",{});//本对象是牛奶过敏的对象
- //事件的拦截
- Ext.util.Observable.capture(children,function(eventName){
- if(eventName=="hungry"){
- alert("这个孩子对牛奶过敏,不能喝");
- return false;
- }else{
- return true;
- }
- });
- children.setMilk("三鹿牛奶");
- /*
- * 为对象添加一个事件addEvents-->事件的监听方式注册这个事件addListener-->触发这个事件的动作fireEvent
- * */
三、addManagedListener 受管制的监听
概述:它是由调用的组件管理的,当组件执行了销毁的命令的时候所有被组件管制的事件全部销毁
创建工具条,利用items属性添加三个按钮create delete 撤销删除按钮
利用button中的handler点击事件来执行动作。调用destroy方法撤销delete按钮(在HTML中的id用get方法获取,而在组件指定的id需要用getCmp方法来获取)
在delete按钮中添加受管理的组件的事件机制。addManagedListener方法来添加
参数:第一个指定的是组件 第二个是事件类型 第三个是此事件的动作
流程:点击create按钮指定动作。在点击撤销删除按钮的时候将delete按钮删除,并且它管理的事件全部销毁,这时点击create无效果
- var tbar=Ext.create("Ext.toolbar.Toolbar",{
- renderTo:Ext.getBody(),
- width:400,
- items:[
- {xtype:"button",id:"create",text:"create"},
- {xtype:"button",id:"delete",text:"delete"},
- {xtype:"button",text:"撤销删除按钮",handler:function(){
- var c=Ext.getCmp("delete");
- if(c){
- c.destroy();
- }
- }}
- ]
- });
- var deleteB=Ext.getCmp("delete");
- deleteB.addManagedListener(Ext.getCmp("create"),"click",function(){
- alert("添加操作");
- });
四、relayEvents 事件的分发和传播(控制实现事件在不同空间或对象对内的传播)
比如说孩子喝完三鹿去医院,老爸就要带他去医院
- //定义father类
- Ext.define("father",{
- extend:"Ext.util.Observable",
- constructor:function(config){
- this.listeners=config.listeners;
- this.superclass.constructor.call(this,config);
- }
- });
- var father=Ext.create("father",{});
- //将孩子的事件机制分发到自身中
- father.relayEvents(children,["hungry"]);
- //注册分发过来的事件监听
- father.on("hungry",function(){
- alert("送喝了三鹿牛奶的孩子去医院..");
- });
- children.setMilk("三鹿牛奶");
五、事件对象Ext.EventObject
概述:当你添加事件的时候会传入一个Ext.EventObject对象的参数,不是一个单例,
不能被直接new出来,他会存活在事件处理的函数中
- var c=Ext.get("btn4");
- c.on("click",function(e){
- alert(e);
- //获取单机的时候的坐标值 可以正确的获取到如果触发的事件一些参数
- alert(e.getPageX());
- });
六、事件管理器Ext.EventManager
概述:它可以更方便的为页面元素绑定事件处理函数,方法:addListener 为元素增减事件
Ext.EventManager.addListener("btn5","click",function(){
alert("通过事件管理器来进行事件注册监听");
});
ExtJs的事件机制Event(学员总结)的更多相关文章
- 锁机制(Lock) 信号量机制(Semaphore) 事件机制(Event)
IPC 进程间通信(inter-Process Communicate) 锁机制(Lock) l = Lock() 开启一个锁机制(实例化) 一把锁配一个钥匙 l.acquire() 获得钥匙 ...
- Ext JS学习第十六天 事件机制event(一) DotNet进阶系列(持续更新) 第一节:.Net版基于WebSocket的聊天室样例 第十五节:深入理解async和await的作用及各种适用场景和用法 第十五节:深入理解async和await的作用及各种适用场景和用法 前端自动化准备和详细配置(NVM、NPM/CNPM、NodeJs、NRM、WebPack、Gulp/Grunt、G
code&monkey Ext JS学习第十六天 事件机制event(一) 此文用来记录学习笔记: 休息了好几天,从今天开始继续保持更新,鞭策自己学习 今天我们来说一说什么是事件,对于事件 ...
- Cocos2d-X3.0 刨根问底(七)----- 事件机制Event源码分析
这一章,我们来分析Cocos2d-x 事件机制相关的源码, 根据Cocos2d-x的工程目录,我们可以找到所有关于事件的源码都存在放在下图所示的目录中. 从这个event_dispatcher目录中的 ...
- Ext JS学习第十七天 事件机制event(二)
此文仅有继续学习笔记: 昨天说了三种邦定事件的方法,今天说一下自定义事件 假设现在又这样的情景一个自定义的事件 没有用到事件处理的场景 母亲问孩子和不饿-> ...
- 白鹭引擎 - 事件机制 ( Event, addEventListener, dispatchEvent )
1, 自定义事件, MyEvent class MyEvent extends egret.Event { /** * 一般会定义一个 DATA 字段作为事件 * 绑定事件监听器时, 一般用 类.DA ...
- Ext JS学习第十六天 事件机制event(一)
此文用来记录学习笔记: 休息了好几天,从今天开始继续保持更新,鞭策自己学习 今天我们来说一说什么是事件,对于事件,相信你一定不陌生, 基本事件是什么?就类似于click.keypress.focus. ...
- Atitit 数据库的事件机制--触发器与定时任务attilax总结
Atitit 数据库的事件机制--触发器与定时任务attilax总结 1.1. 事件机制的图谱1 2. 触发器的类型2 3. 实现原理 After触发器 Vs Instead Of触发器2 3.1. ...
- PHP event 事件机制
PHP event 事件机制 <?php /* * PHP 事件机制 */ class baseClass{ private $_e; public function __set($name ...
- Magento事件机制 - Magento Event/Observer
为了扩展Magento的功能,我们可以重写Magento的代码,但因为代码只能被重写一次,所以当多个模块需要重写同一部分的代码时,就会引起冲突,好在Magento提供了另一种扩展功能的方法:事件机制, ...
随机推荐
- 「Poetize7」足球比赛
描述 Description SJZEZ和TSYZ正在进行一轮足球联谊赛,根据规则,这轮比赛有两场,一场在SJZEZ的主场进行,一场在TSYZ的主场进行.胜负判断标准如下:1.在两场比赛中进球总数较多 ...
- matlab中如何求某一个矩阵的标准差和均值
方法: 先reshape成行向量或者列向量 然后,利用mean函数,std函数. 构造测试数据,可以利用random函数,就好.利用这个函数,可以构造不同分布的随机数列(或 矩阵). 如: >& ...
- module_init和init_module的区别
今天在看CS8900的驱动时,发现其驱动的模块加载函数是init_module(),由于看到大多数的驱动用的模块加载函数大多是module_init()函数,所以一时没缓过神来,总是在找CS8900的 ...
- [Hibernate] 基本增删查改
本文记录,Java 应用通过 Hibernate 对数据库 MySQL 进行基本的增删改查操作,即CRUD. 本例子的目录结构如下 hibernate.cfg.xml 存储数据库信息,如数据库类型,账 ...
- sqlserver使用户只能在某个架构下建立表和存储过程
1.首先,建立一个用户之后,默认的架构是dbo,默认的角色是public.这种情况下,这个用户将看不到dbo以及其他架构下的对象.除非单独进行授权. 2.新建一个架构test,然后使得这个架构的所 ...
- Python读写文件模式
1.r 打开只读文件,该文件必须存在. 2.r+ 打开可读写的文件,该文件必须存在. 3.w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失.若文件不存在则建立该文件. 4.w+ 打开可 ...
- today's learning of english 2
1..fumbling 缓慢 笨拙的 2.dancing with impatience in the chekout line sighed exasperation 在安全线外 ...
- 15、Cocos2dx 3.0游戏开发找小三之Sprite:每一个精灵都是上辈子折翼的天使
重开发人员的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/30475395 Sprite Sprite 能够说是 ...
- paip.输入法编程----删除双字词简拼
paip.输入法编程----删除双字词简拼 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/at ...
- CodeForces 55D Beautiful numbers(数位dp)
数位dp,三个状态,dp[i][j][k],i状态表示位数,j状态表示各个位上数的最小公倍数,k状态表示余数 其中j共有48种状态,最大的是2520,所以状态k最多有2520个状态. #include ...