`
jayyanzhang2010
  • 浏览: 378021 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论
阅读更多
1、事件驱动编程概述
  事件及事件处理其实就是当用户执行某一个操作,或者是对象进入某一个状态时,会给哪些关心这个动作及状态的对象发送一个通知,那些对象(监听者)接受到通知后,会作具体的响应。比如说,当用户移动或点击一下鼠标、者按下键盘,或者是当某一个组件隐藏时,或者某一个动作执行之前或执行完后等,都可以产生事件通知,对这个通知感兴趣的程序(事件监听器)会执行,并作相应的处理。
2、传统DOM事件编程例子
<script>
function a(e){
alert('some thing'+e.getX());
}
</script>
<input type="button" value="alert框" id="btnAlert" onclick="a();">

   用代码来定义上面的事件
<script>
function a(e){
alert('some thing'+e.getX());
}
window.onload=function(){
document.getElementById("btnAlert").onclick=a;
}
</script>
<input type="button" value="alert框" id="btnAlert">
   传统事件对象:
   事件源,事件目标,监听器
   IE中的Event处理!

3、Ext对DOM事件的扩展
  对于Ext这种用于处理用户UI的框架来说,事件的处理及响应就显得更加的重要了,那些ExtJS提供了一套强大的事件处理机制,通过这些事件处理机制来响应用户的动作、监控控件状态变化、更新控件视图信息、与服务器进行交互等等。
  对于Ext来说,他在传统事件的基础上提供了更多丰富多彩的事件处理机制,我们可以使用他的事件处理机制,通过事件响应及处理,编写出交互性非常灵活的Web应用程序。
  Ext的事件支持体现在两个方面,首先是对浏览器默认事件进行了进一步的扩展及封装,比如在Event对象的基础上提供了一个EventObject,提供了全局的事件管理器,灵活多变的事件响应方法,比如说在事件发生后几秒才响应事件,或者事件队列等功能。

使用Ext的事件处理机制,前面的事件处理可以变成如下的形式:
<script>
function a(e{
alert('some thing'+e.getX())
}
Ext.onReady(function(){
Ext.get("btnAlert").addListener("click",a);
});
</script>
<input type="button" value="alert框" id="btnAlert">

  在调用addListener 方法的代码中,第一个参数表示事件名称,第二个参数表示事件处理器或事件响应函数。ExtJS支持事件队列,可以往对象的某一个事件中添加多个事件响应函数,比如下面的代码:
  Ext.onReady(function(){
Ext.get("btnAlert").on("click",a);
Ext.get("btnAlert").on("click",a);
});
  由于调用了两次addListener或on方法,因此当点击按钮的时候会弹出两次信息。
  当然,ExtJS还支持事件延迟处理或事件处理缓存等功能,比如下面的代码:
  Ext.onReady(function(){
Ext.get("btnAlert").on("click",a,this,{delay:2000});
});
  由于在调用addListener的时候传递指定的delay为2000,因此当用户点击按钮的时候,不会马上执行事件响应函数,而是在2000毫秒(也就是两秒)后才会弹出提示信息框。
  另外,Ext对事件响应还提供了更多其它的特性支持,主要包括下面这些内容:
  监听器缓冲,可以实现在指定的缓冲时间周期内,事件响应函数只执行一次,代码如下:
el.on('click', this.onClick, this, {buffer: 100});

  还可以使用options选项来指定事件的响应及处理机制,比如是否阻止事件的进一步传播或响应等。
el.on('click', this.onClick, this, {preventDefault: true});
 // only stop propagation
el.on('click', this.onClick, this, {stopPropagation: true});
 // prevent default and stop propagation
el.on('click', this.onClick, this, {stopEvent: true});
当然,还可以包含其它的选项,比如下面的代码:
el.on('click', this.onClick, this, {
    single: true, // 在事件响应函数触发后自动删除监听器
    delegate: 'li.some-class' //自动事件代理 Automatic event delegation!
});

还可以在options参数中包括自定义的参数信息,比如下面的代码:
function onClick(ev, target, options){
   alert(options.someProperty); // alerts 'someValue'
}
var el = Ext.get('somelink');
el.on('click', onClick, null, {someProperty: 'someValue'});

可以一次性给某一个元素添加多个事件响应函数,比如下面的代码给元素添加了click、mouseover及mouseout等事件的事件响应函数。
el.on({
    'click' : {
    fn: this.onClick,
scope: this,
delay: 100
    },
    'mouseover' : {
    fn: this.onMouseOver,
scope: this
    },
    'mouseout' : {
    fn: this.onMouseOut,
        scope: this
    }
});

4、Ext组件的事件
  Ext的中有一个Ext.util.Observable类,他提供了对象的事件观察监听及消息通知、事件触发等一系列的事件及响应相关功能,而Ext组件的基类Component就是继承自这个类。因此,Ext为其组件提供了非常丰富的事件模型,比如组件生命周期变化、组件某一状态改变等,都提供了特定的事件支持。
  比如说,所以有的组件都有一个render事件,而这个事件是在组件渲染完以后会触发,这时我们就可以通过监听这个事件来实现在组件渲染后执行特定的操作。看下面的代码:
function showHtml(p){
alert(p.el.dom.innerHTML);
}
var panel=new Ext.Panel({title:"面板",width:500,height:300});
panel.addListener("render",showHtml);
panel.render("test")
  那么一旦panel渲染(调用了render方法)以后,就会马上执行showHtml这个方法,并把panel对象作为参数传递给showHtml方法,因此我们可以看到这个panel的HTML代码片段。当然,如果Panel没有渲染,比如我们不调用render方法,则不会执行showHtml中的内容。
  有一些事件的响应函数会返回特定值,Ext或根据这个响应函数的返回来判断是否执行相应的操作。比如说所有组件都有一个beforehide事件,这个事件是在组件变成隐藏之前触发,如果事件响应函数返回了一个false的值,那么他就会停止执行隐藏组件这个动作。
  比如说来看下面的代码:
function confirmHide(){
return confirm("是否真要隐藏这个组件");
}
var panel=new Ext.Panel({title:"面板",width:500,height:300});
panel.on("beforehide",confirmHide);
panel.render("test");
panel.hide();
  那么这个当谳用panel.hide()这个方法时候,他就会隐藏这个组件,但是由于前面注册了一个beforehide事件,因此他就会在隐藏组件之前先调用confirmHide方法,这个方法通过一个confirm函数来让用户选择是否隐藏,如果我们们选择“是“则会返回true,那么这个组件就被隐藏,如果选择“否”则返回false,那么hide方法就会停止执行隐藏的操作。
  那么一个组件究竟支持哪些事件,这些事件在触发时会给响应函数传递什么样的参数,以及事件响应函数是否会对组件的下一步操作产生影响,这就需要我们通过组件的API中的Events部分来了解具体的信息了。
分享到:
评论

相关推荐

    Ext2Fsd - Ext2文件系统驱动

    Ext2Fsd是一款专为Windows设计的开源软件,它允许用户在Windows操作系统上无缝地读取和写入Linux的Ext2、Ext3和Ext4文件系统。这一工具极大地便利了那些需要在Windows与Linux系统之间交换数据的用户,无需通过额外的...

    安装ooize需要的ext2.2.zip以及Mysql驱动

    这篇文本将详细介绍"安装ooize需要的ext2.2.zip以及Mysql驱动"这一主题,包括ext2.2.zip的用途、MySQL连接器的重要性,以及如何进行安装。 **1. ext2.2.zip** ext2.2.zip是一个包含EXT2文件系统驱动的压缩包。EXT2...

    Ext继承--Ext自定义组件的书写方式

    目的:该示例非常详细注释说明Ext的面向对象的编程方式,使用继承,然后重写父类的方法,以及注册自定义事件说明Ext框架是事件驱动的框架编程。 阅读对象:本中心学习Ext面向对象编程的人员 阅读条件:掌握OO的思路...

    Ext 4.0官方最新版下载

    Ext 4.0是Sencha公司开发的一个JavaScript框架的重要版本,专用于构建富客户端Web应用程序。这个框架基于组件模型,提供了丰富的用户界面组件和强大的数据管理能力,使得开发者能够创建功能强大、交互性强的Web应用...

    在windows下使用Ext2Fsd访问EXT4分区

    4. **访问分区**:现在你可以像操作任何其他Windows驱动器一样,通过双击挂载点访问EXT4分区的内容。 5. **安全卸载**:使用完毕后,记得通过Ext2Fsd的“卸载”功能安全地断开EXT4分区,以防止数据丢失或损坏。 **...

    Windows 7下使用Ext2Fsd读取写入Linux Ext3&Ext4分区文件

    4. 关闭Ext2Fsd的设备选择窗口,现在你可以在“我的电脑”或“资源管理器”中看到新分配的驱动器,可以像操作其他Windows分区一样操作Linux分区了。 **注意事项** 1. 使用Ext2Fsd进行写入操作时需谨慎,因为...

    ext_教程 (ext 相 关)

    同时,EXT的Data Package提供了强大的数据管理功能,与服务器进行双向数据同步,实现数据驱动的界面更新。 精通EXT不仅需要理论知识,更重要的是实践。通过不断的编码和调试,你会逐渐熟悉EXT的API,掌握组件间的...

    ext学习资料 20篇详细学习笔记 初学者ext学习的文档

    EXT提供了一套完整的组件模型、数据绑定、事件系统和强大的布局管理,使得开发者能够创建功能丰富的、交互性强的Web应用。这份"ext学习资料 20篇详细学习笔记 初学者ext学习的文档"是针对EXT初学者的一份宝贵资源,...

    Ext2IFS windows

    在Windows环境中,通常无法直接读取或写入Linux系统的ext2、ext3或ext4分区,而Ext2IFS就是解决这一问题的驱动程序。 **Ext2IFS详解:** 1. **什么是Ext2IFS?** Ext2IFS(Extended File System Interface for ...

    EXT3.0 登录实例

    4. **事件监听与处理**:EXT3.0使用事件驱动模型,登录按钮的点击事件通常会触发一个函数,该函数负责收集表单数据,可能还会进行简单的客户端验证,然后使用Ajax技术向服务器发送POST请求。 5. **Ajax通信**:EXT...

    ext3.4 ext3.1.0以及ext3.0API

    开发者通过调用这些函数,可以编写出与EXT3文件系统交互的应用程序或驱动程序。 在学习和开发EXT3时,需要理解以下关键概念: - **inode(索引节点)**:存储文件元数据,如文件所有者、权限、大小、创建和修改...

    EXT帮助文档(中文EXT3.0 API,中文EXT2.2 API)

    中文EXT3.0 API文档是EXT库的3.0版本的中文接口参考手册,它详细介绍了EXT 3.0中的各个类、方法、属性和事件。EXT 3.0是EXT库的一个重要版本,引入了许多新功能和改进,例如改进的数据网格、强大的图表组件、新的...

    EXT和JAVA例子

    EXT JS还支持事件驱动编程,使得用户操作可以触发相应的处理函数。 在Java方面,可能使用了Servlet或者Spring MVC这样的Web框架来处理HTTP请求和响应。Java代码会处理业务逻辑,比如从数据库中检索数据,进行计算,...

    EXT4 源码+window下模拟ext2+linux_ext文件系统模拟

    EXT4是Linux操作系统中最常用的文件系统之一,它在2008年被引入到Linux内核,以替代较旧的EXT3系统。EXT4的主要改进包括更大的文件系统大小支持、更快的性能以及对大量小文件的优化处理。在这个压缩包中,你可能会...

    ext.net后台管理

    3. **事件驱动**:EXT.NET采用事件驱动的编程模型,通过事件监听和处理,可以轻松实现用户交互逻辑。 4. **响应式布局**:EXT.NET支持响应式设计,能自动适应不同设备和屏幕尺寸,确保在桌面、平板和手机上都能提供...

    ext2fsd ext文件系统解析

    它包含驱动代码,使得Windows系统能够识别并处理EXT2、EXT3和EXT4格式的分区。ext2fsd提供了读写支持,使用户能够在Windows环境下创建、修改、删除EXT分区上的文件和目录。 通过使用ext2fsd,开发者和系统管理员...

    ext 3.2中文api目前最全

    10. **事件处理**:EXT使用事件驱动模型,组件间的交互通常通过事件监听和触发来实现。EXT提供了丰富的事件系统,包括组件事件、DOM事件和自定义事件。 在"Ext3.2中文API(最终完成版2010-11-08).CHM"这个文件中,你...

    ext 打造华丽页面

    EXT的事件系统灵活且可扩展,可以方便地与其他JavaScript库或后端服务协同工作。 JavaScript是EXT JS的基石,因此掌握JavaScript的基本语法和面向对象编程是使用EXT的前提。EXT JS 1.1虽然较为古老,但仍然包含了...

    ext 3.0 中文API

    EXT 3.0 是一个基于 JavaScript 的富因特网...此外,理解EXT的事件驱动机制和数据绑定原理也是掌握EXT的关键。通过EXT 3.0 中文API的学习,开发者将能够构建出功能丰富、交互性强的Web应用,提升开发效率和用户体验。

Global site tag (gtag.js) - Google Analytics