ext 监听机制

好了,接下来我们来看一下ext是如何实现监听的

首先,他为我们定义了监听的一个借口,

该接口继承了许多类的方法,如

通过这个借口,我们就能定义我们的监听类了,如下:

Ext.define(‘Employee‘, {
    mixins: [‘Ext.mixin.Observable‘]

constructor: function (config) {
        //通过下面的构造函数将config的参数进行初始化,很重要
        this.mixins.observable.constructor.call(this, config);
    }
});

var newEmployee = new Employee({
    name: ‘Li‘,
    listeners: {
        quit: function() {
            // 自定义触发事件
            alert(this.name + " has quit!");
        }
    }
});//我们用如下方法进行测试,是不是很简单呢
    if(newEmployee.hasListeners.quits){
        newEmployee.fireEvent(‘quits‘);
        }

好了我们继续往下走:

在这个基类下,他有一个listeners属性,怎么用呢,API里面是这样说的:

While some Ext JS Component classes export selected DOM events (e.g. "click", "mouseover" etc), this is usually
only done when extra value can be added. For example the DataView‘s itemclick event passing the node clicked on. To access DOM events directly from a
child element of a Component, we need to specify the element option to identify the Component property to add a
DOM listener to:

如果你想为容器等其他增加一个单击事件,那么只需给该容器绑定一个元素element,DOM事件会直接对element这个元素执行

如下:

var panel=Ext.create(‘Ext.panel.Panel‘,{
        width:300,
        height:200,
        title:‘yes‘,
        items:[
            {
                xtype:‘button‘,
                html:‘123‘,
                width:50,
                margin:‘25 0 0 20‘,
                listeners: {
        click: {
            element: ‘el‘, //bind to the underlying el property on the panel
            fn: function(){ alert(‘click el‘); }
            }
        }
                }
        ],
         listeners: {
        dblclick: {
            element: ‘body‘, //bind to the underlying body property on the panel
            fn: function(){ alert(‘dblclick body‘); }
        }
    },
        renderTo:Ext.getBody()    
        })

=============================================================================

接下来我们再来看看如何增加监听

该基类为我们提供了一个addListeners方法,我们来看一下是如何使用的:

先来定义一个类:

Ext.define(‘Father‘,{
            extend:‘Ext.panel.Panel‘,
            title:‘yes‘,
            onMouseOver:function(){alert(‘onMouseOver‘);},
            onMouseOut:function(){alert(‘onMouseOut‘);},
            items:[
            {
                xtype:‘button‘,
                html:‘clickme‘,
                id:‘kk‘
                }
            ],
            renderTo:Ext.getBody()
            
        });

var father=Ext.create(‘Father‘,{
            width:300,
            height:500,
            });

第一种监听方法:

father.on(‘mouseover‘, father.onMouseOver, this);

第二种:

father.on({
            mouseover: {fn: father.onMouseOver, scope: this, single: true},
            cellClick: {fn: this.onMouseOver, scope:ll}
        });

第三种:

father.on({
    cellClick: {fn: ‘onCellClick‘, scope: this, single: true},//这里的single表示只允许单机一次,scope表示作用域必填
    mouseover: {fn: ‘onMouseOver‘, scope: father}
});

用Ext.get(‘kk‘).on(‘click‘,function(){
            father.fireEvent(‘mouseover‘);
            })来检验,不过今天小海我发现了设置了scope的作用域后,fireEvent依旧执行,不知道是不是bug,感觉好奇怪,当然了。如果你发现了怎么使用这个scope你也可以告诉我,一起进步,一起学习嘛。好了,这一节我们就暂时到这吧

时间: 2024-09-27 14:49:58

ext 监听机制的相关文章

Java中的事件监听机制

鼠标事件监听机制的三个方面: 1.事件源对象: 事件源对象就是能够产生动作的对象.在Java语言中所有的容器组件和元素组件都是事件监听中的事件源对象.Java中根据事件的动作来区分不同的事件源对象,动作发生在哪个组件上,那么该组件就是事件源对象 2.事件监听方法: addMouseListener(MouseListener ml) ;该方法主要用来捕获鼠标的释放,按下,点击,进入和离开的动作:捕获到相应的动作后,交由事件处理类(实现MouseListener接口)进行处理. addAction

.NET事件监听机制的局限与扩展

.NET中把“事件”看作一个基本的编程概念,并提供了非常优美的语法支持,对比如下C#和Java代码可以看出两种语言设计思想之间的差异. // C#someButton.Click += OnSomeButtonClick; // JavasomeButton.addActionListener( new ActionListener(){ public void actionPerformed(){ ... } }); 在我们的软件中就大量使用事件来对监听者与发布者解耦,但也遇到了一些局限,在这

4.JAVA之GUI编程事件监听机制

事件监听机制的特点: 1.事件源 2.事件 3.监听器 4.事件处理 事件源:就是awt包或者swing包中的那些图形用户界面组件.(如:按钮) 事件:每一个事件源都有自己特点有的对应事件和共性事件.(如:鼠标单击事件) 监听器:将可以触发某一事件的动作(不止一个动作)都已经封装到了监听器中. 以上三者,在java中都已经定义好了,直接获取其对象来用就可以了. 我们要做的事情是,就是对产生的动作进行处理. 图解事件监听机制: 4.JAVA之GUI编程事件监听机制,布布扣,bubuko.com

GUI编程笔记05:GUI事件监听机制原理和举例说明

1.事件监听机制:       A:事件源          事件发生的地方       B:事件             就是要发生的事情       C:事件处理       就是针对发生的事情做出的处理方案       D:事件监听       就是把事件源和事件关联起来 2.举例:人受伤事件. 事件源:人(具体的对象)         Person p1 = new Person("张三");         Person p2 = new Person("李四&qu

关于JAVA中事件分发和监听机制实现的代码实例-绝对原创实用

http://blog.csdn.net/5iasp/article/details/37054171 文章标题:关于JAVA中事件分发和监听机制实现的代码实例 文章地址: http://blog.csdn.net/5iasp/article/details/37054171 作者: javaboy2012Email:[email protected]qq:    1046011462 一.场景假设 假设有博客系统中需要实现如下功能: 系统中用户发布文章,修改文章,删除文章时,需要一些相关的操作

关于事件监听机制的总结(Listener和Adapter)

记得以前看过事件监听机制背后也是有一种设计模式的.(设计模式的名字记不清了,只记得背后实现的数据结构是数组.) 附上事件监听机制的分析图: 一个事件源可以承载多个事件(只要这个事件源支持这个事件就可以,男人就不支持生孩子的事件)  事件和监听器有对应关系的. 下面用awt中的标准图形化界面分析: 接口WindowListener 中有一个实现类WindowAdapter类.适配器类. EventListener.java 下面是所有超级接口EventListener.java的源代码   其实就

Spring架构揭秘-事件监听机制

一.事件监听机制概述 二.事件监听机制结构 三.Spring监听机制架构 Spring的Application拥有发布事件并且注册事件监听器的能力,拥有一套完整的事件发布和监听机制.在Java中,通过java.util. EventObject来描述事件,通过java.util. EventListener来描述事件监听器,在众多的框架和组件中,建立一套事件机制通常是基于这两个接口来进行扩展. 在一个事件体系中,有以下几个重要的概念. 1.事件源:事件对象的产生者,任何一个EventObject

Eclipse插件开发中的选择监听机制(Selection Provider-Listener)

Eclipse插件开发中的选择监听机制(Selection Provider-Listener) 监听机制是eclipse插件开发或rcp应用开发中常用的技术,比如点击TableViewer或TreeViewer中的某个元素,需要针对当前selection做出某些处理. 实现方式一般有两种情况,即selection provider 和listener在一个视图中,或在不同的视图中: 1.selection provider自己增加监听进行处理 前者直接让selection provider实现

Java 中的事件监听机制

看项目代码时遇到了好多事件监听机制相关的代码.现学习一下: java事件机制包含三个部分:事件.事件监听器.事件源. 1.事件:继承自java.util.EventObject类,开发人员自己定义. package com.shuyan.javatest.EventTest; import java.util.EventObject; public class DnsEvent extends EventObject { private String userData; private long