html:代码

DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link type="text/css" rel="stylesheet"  href="../../extjs-4.1.1/resources/css/ext-all.css"  />
<script type="text/javascript" src="../../extjs-4.1.1/bootstrap.js"></script>
<script type="text/javascript" src="../../extjs-4.1.1/locale/ext-lang-zh_CN.js"></script>
<script type="text/javascript" src="event.js"></script>
</head>
<body>
    <button id="walk">walk</button>
    <button id="eat">eat</button>
    <button id="sleep">sleep</button>
</body>
</html>

event.js:代码

Ext.onReady(function(){
    /**
     * Ext 中事件分为自定义事件和浏览器事件
     */
    /**
     * 第一步定义Person,注册监听事件
     */
    
    Ext.define("Person",{
        extend:'Ext.util.Observable',//添加监听必须继承Observable
        constructor:function(config){
            this.name=config.name;
            this.addEvents({
                'walk':true,//监听名,是否启
                'eat':true,
                'sleep':true
            });
            this.listeners=config.listeners;
             Person.superclass.constructor.call(this, config);
        }
    });
    
    /**
     * 给person 添加事件监听器
     */
    
    var person=new Person({
        name:'Longo',
        listeners:{
            walk:function(){
                Ext.Msg.alert("event",person.name+" 再走啊走啊");
            },
            eat:function(breakfast,lunch,supper){
                Ext.Msg.alert("event",person.name+" 要吃"+breakfast+","+lunch+" 和 "+supper);
            },
            sleep:function(time){
                Ext.Msg.alert("event",person.name+" 从 "+time+" 开始睡觉");
            }
        }
    });
    
    
    Ext.get('walk').on('click',function(){
        person.fireEvent('walk');
    });
    Ext.get('eat').on('click',function(){
        person.fireEvent('eat','早餐','中餐','晚餐');
    });
    Ext.get('sleep').on('click',function(){
        person.fireEvent('sleep',new Date());
    });
});

浏览器事件

Ext.onReady(function(){
    /**
     * 元素的onclick事件,第一个绑定的事件会被第二个事件覆盖,
     * 再Extjs你不用再担心这种事件
     */
    
    var e=document.getElementById("walk");
    e.onclick=function(){alert("handler1")};
    e.onclick=function(){alert("handler2")};
    /**
     * 在ExtJs中,绑定的两次事件都会执行,不会发生第二次绑定覆盖掉第一次事件
     */
    var te=Ext.get('walk');
    te.on('click',function(){
        alert("handler1");
    });
    te.on('click',function(){
        alert("handler2");
    });
    
});

ExtJs 学习之开篇(二) Observable 给类添加监听的更多相关文章

  1. extjs 学习笔记(二)

    EXTJS实用开发指南 1. 要使用ExtJS 框架的页面中一般包括下面几句: <link rel="stylesheet" type="text/css" ...

  2. JavaScript学习总结(十二)——JavaScript编写类

    在工作中经常用到JavaScript,今天总结一下JavaScript编写类的几种写法以及这几种写法的优缺点,关于JavaScript编写类的方式,在网上看到很多,而且每个人的写法都不太一样,经常看到 ...

  3. android菜鸟学习笔记23----ContentProvider(三)利用内置ContentProvider监听短信及查看联系人

    要使用一个ContentProvider,必须要知道的是它所能匹配的Uri及其数据存储的表的结构. 首先想办法找到访问短信及联系人数据的ContentProvider能接受的Uri: 到github上 ...

  4. java web hello world(二)基于Servlet理解监听

    java web最开始实现是通过Servlet实现,这里就来实现下,最原始的监听是如何实现的. 第一步,创建一个基本的web项目 ,参见(java web hello world(一)) 第二步,we ...

  5. Extjs学习笔记--(二)

    1.配置实用Extjs <link href="Extjs/resources/css/ext-all.css" rel="stylesheet" /&g ...

  6. [转]ExtJS学习笔记(二):handler与listener的区别

    原文地址:http://blog.csdn.net/smilingleo/article/details/3733177 ExtJS里handler和listener都是用来对用户的某些输入进行处理的 ...

  7. ExtJs 学习之开篇(-)之define

    Ext.onReady(function(){    /**     * test1,声明一个类,定义类中的方法     */ Ext.define("demo.Demo",{   ...

  8. 【C#】第3章学习要点(二)自定义类和结构

    分类:C#.VS2015 创建日期:2016-06-19 使用教材:(十二五国家级规划教材)<C#程序设计及应用教程>(第3版) 一.要点概述 别人提供的类都是为了简化你的工作量用的,可是 ...

  9. Cocos2d-x学习笔记(二)AppDelegate类详解

    由源代码,可得到如下的类继承关系: 1. 在方法applicationDidFinishLaunching中,首先会调用CCDirector* pDirector = CCDirector::shar ...

随机推荐

  1. Android系统文件夹组织结构

  2. Python开发入门与实战17-新浪云部署

    17. 新浪云部署 上一章节我们介绍了如何在本地windows服务器部署python django的网站,本章我们简要说明一下如何把python django工程部署到云服务上. 本章章节我们描述如何 ...

  3. html canvas 弹球(模仿)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. 学习Find函数和select

    Find函数其实就类似于在excel按下Ctrl+F出现的查找功能:在某个区域中查找你要找的字符,一旦找到就定位到第一个对应的单元格.所以Find函数的返回值是个单元格,也就是个range值.举例,s ...

  5. IOS的Crash情况在Crashlytics平台上统计解决方案的一点遗憾(截止到2015年6月14日)

    平台针对特定版本的monkey操作后数量统计,按时间段定时去获取,最后根据操作批次出具分析报告: 问题是crashlytics平台仅提供一个BS登录查看WEB后台,所以无法通过API或者DB去直接获取 ...

  6. 使用easeui dialog弹出框中使用CKeditor多次加载后无法编辑问题

    问题呈现:弹出框页面 <tr class="addtr"> <th>内容</th> <td> <!-- <textare ...

  7. java 接口

    1.接口的引出:发现没有继承关系的类也能共享行为 2.接口不是类,类描述对象的属性和行为,但是接口只关注实现的行为3.当我们发现有行为在多个没有继承关系的类中共享,我们要把它抽取到接口中,而不是写到父 ...

  8. java java.lang.NoClassDefFoundError 的解决办法

    以简单而经典的 "HelloWorld.java" 为例 不含包层次的HelloWorld.Java public class HelloWorld { public static ...

  9. Android 简易崩溃日志保存

    仅仅做了简单的保存到了本地而已: 根据需要可以继续增加功能: 下一次启动上传到服务器: 增加应用版本,机型系统版本信息等: public class CrashSaver { public stati ...

  10. python27(32位)安装RTree

    一开始用pip install -r requirements.txt 报错:OSError: could not find or load spatialindex_c.dll 1)从以下链接下载编 ...