`
Readonly
  • 浏览: 150774 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

qooxdoo's events handle and dispatch

阅读更多
qooxdoo的事件处理机制相当简洁且不失灵活,qx.core.Target定义了如下3个常用的事件处理方法:
1. addEventListener
最简单的写法是
classInstance.addEventListener("eventName", functionPointer);

function functionPointer() {...};


当然你也可以用inline function
classInstance.addEventListener("eventName", functionPointer() {});


比如,偶们有一个button,希望在点击它的时候能够隐藏,那么用事件处理机制就可以这样来写:
var btnHideMe = new qx.ui.form.Button("Hide Me", "icon/16/ok.png");
btnFinish.addEventListener(qx.constant.Event.EXECUTE, function(){
    this.hide();
});


代码简单、好用、而且还充满亲切感。

如果你需要传递不同的context object,还可以这样调用:
classInstance.addEventListener("eventName", functionPointer() {}, contextObject);



2. removeEventListener
//TODO...


3. createDispatchEvent
//TODO..



举一个实际的Wizard Window来看一下qooxdoo的事件处理机制在构建复杂Widget时候的优势,先上图片:


这个Wizard Window继承了qx.ui.window.Window,然后加入了几个button,并且在用户点击next button的时候,分发了一个DataEvent:
qx.OO.defineClass("com.javaeye.qooxdoo.WizardWindow", qx.ui.window.Window,
function(vCaption, vIcon, vWindowManager)
{
    qx.ui.window.Window.call(this, vCaption, vIcon, vWindowManager);

    var btnNext = this._btnNext = new qx.ui.form.Button("Next", "icon/16/forward.png");
    btnNext.addEventListener(qx.constant.Event.EXECUTE, function() {
        this.createDispatchDataEvent(qx.constant.Event.DIALOGNEXT, this.getSelectedIndex());
        if(this.getCheckNext()){
            this.next();
        }
    }, this);
    
    var btnBack = this._btnBack = new qx.ui.form.Button("Back", "icon/16/back.png");
    //...
});


任何注册了qx.constant.Event.DIALOGNEXT事件的Listener Function就可以拿到这个事件用来做校验或者其他的工作,在下面代码里面,就是用来校验3个栏位是否都已经填写了值:
var w = new com.javaeye.qooxdoo.WizardWindow("Create New Account", "icon/16/editor.png");
w.addEventListener(qx.constant.Event.DIALOGNEXT, function(e) {
    switch(e.getData()){
        case 0:
            this.setCheckNext(true);
            if(!txtAccountName.getValue()) {
                txtAccountName.focus();
                this.setCheckNext(false);
            }
            break;
        case 1:
            this.setCheckNext(true);
            if(!txtInitialDate.getValue()) {
                txtInitialDate.focus();
                this.setCheckNext(false);
                break;
            }
            if(!txtInitialAmount.getValue()) {
                txtInitialAmount.focus();
                this.setCheckNext(false);
                break;
            }
            if(!txtCurrency.getValue()) {
                txtCurrency.focus();
                this.setCheckNext(false);
                break;
            }
            break;
    }
});
分享到:
评论

相关推荐

    qooxdoo.pdf

    qooxdoo是一个使用JavaScript编写的开源应用程序框架,用于开发富互联网应用(RIA)。它包含了一整套用于构建跨浏览器应用的工具和组件,从底层的类系统到用户界面组件,例如表格、列表、窗口、按钮、弹出窗口等。...

    qooxdoo4.1

    **Qooxdoo 4.1:面向对象的JavaScript富客户端开发框架** Qooxdoo是一个强大且功能丰富的JavaScript框架,特别设计用于构建富互联网应用程序(RIA)。它以面向对象的编程模型为核心,为开发者提供了丰富的工具和库...

    前端项目-qooxdoo.zip

    **前端项目-qooxdoo.zip** 是一个包含前端开发框架qooxdoo的资源压缩包。**qooxdoo** 是一个开源的、跨平台的JavaScript框架,它为构建复杂且交互性强的Web应用程序提供了全面的工具链。这个框架的设计理念是面向...

    qooxdoo sdk 1.0

    **qooxdoo SDK 1.0:一个强大的开源AJAX框架** qooxdoo是一个功能丰富的JavaScript开发框架,特别适合构建复杂的、跨平台的Web应用程序。它的SDK 1.0版本是该框架的重要里程碑,提供了全面的工具集和资源,帮助...

    前端开源库-qooxdoo-sdk

    **Qooxdoo SDK:面向编码人员的JavaScript框架** Qooxdoo是一个强大的前端开源库,专门设计用于构建复杂的、跨平台的Web应用程序。它的全称为"Qooxdoo Software Development Kit",提供了完整的工具链,帮助开发者...

    qooxdoo-qooxdoo-release_2_0_1

    **qooxdoo框架详解与应用** qooxdoo是一个强大的开源JavaScript框架,它为开发者提供了构建跨浏览器、跨平台的富互联网应用程序(RIA)的能力。在【标题】"qooxdoo-qooxdoo-release_2_0_1"中,我们可以看到这是...

    qooxdoo:qooxdoo-通用JavaScript框架

    Qooxdoo JavaScript框架qooxdoo是一个通用JavaScript框架,使您可以为各种平台创建应用程序。 通过其面向对象的编程模型,您可以构建丰富的交互式应用程序(RIA),用于移动设备的类似于本机的应用程序,轻量级的...

    qooxdoo:一个全面和创新的AJAX应用程序框架_part1

    qooxdoo是一个全面和创新的AJAX应用程序框架。利用面向对象的JavaScript允许开发令人印象深刻的跨浏览器的应用。没有HTML,CSS知识,也不是必要的。它包括一个独立于平台的开发工具链,一个最先进的图形用户界面工具...

    qooxdoo:一个通用JavaScript框架-开源

    **qooxdoo:一个通用JavaScript框架** qooxdoo是一个强大的开源JavaScript框架,专为构建跨平台的应用程序而设计。这个框架的核心理念是提供一套完整的解决方案,让开发者能够高效地开发出高质量、功能丰富的Web...

    新将delphi的form窗口转换为qooxdoo窗体

    标题中的“新将Delphi的Form窗口转换为Qooxdoo窗体”指的是一个技术转换过程,涉及到两个不同的开发环境和框架:Delphi和Qooxdoo。Delphi是一款基于Object Pascal语言的集成开发环境(IDE),常用于构建桌面应用程序...

    Qooxdoo 1.3 SDK

    Qooxdoo是一个开源的JavaScript框架,用于构建富互联网应用程序(RIA)。它的1.3版本SDK是一个开发工具包,包含了创建、编译和运行Qooxdoo应用所需的所有组件和工具。下面将详细介绍Qooxdoo 1.3 SDK中的核心知识点。...

    Qooxdoo GUI Designer

    qooxdoo开发框架的界面可视化设计器

    qooxdoo-compiler:Qooxdoo的编译器,100%javascript

    Qooxdoo编译器和命令行界面 Qooxdoo-Compiler是Qooxdoo( )应用程序的新编译器和命令行界面,使用100%Node.JS Javascript编写,它在标准python生成器上进行了以下关键改进: 包括Babel,用于将ES6添加到所有...

    QXGUIDesigner(20160616)

    **QXGUIDesigner(20160616)**是专为Web前端开发者设计的一款基于**qooxdoo**框架的GUI(图形用户界面)设计器。此工具旨在简化和加速开发过程,通过可视化的方式来构建和设计网页应用的用户界面。在2016年6月16日的...

    springmvc-qooxdoo:Spring MVC + Qooxdoo

    Spring MVC和Qooxdoo是两个在Web开发领域中广泛使用的框架,它们分别专注于后端和前端技术。本文将深入探讨这两个技术,并结合文件名称"springmvc-qooxdoo-master"来推测这是一个整合了Spring MVC与Qooxdoo的项目...

    qooxdoo:一个全面和创新的AJAX应用程序框架_part2

    qooxdoo是一个全面和创新的AJAX应用程序框架。利用面向对象的JavaScript允许开发令人印象深刻的跨浏览器的应用。没有HTML,CSS知识,也不是必要的。它包括一个独立于平台的开发工具链,一个最先进的图形用户界面工具...

    qxl.apiviewer:qooxdoo apiviewer应用

    在线版本(qx名称空间) 为您自己的代码添加API查看器 $ qx pkg update$ qx pkg install qooxdoo/qxl.apiviewer$ qx serve -S然后打开 。 您将看到现在列出了一个新的应用程序“ API Viewer”,您可以单击该链接来...

    qooxdoo-cli:(已弃用,移至qooxdoo-compiler中)qx命令行

    qooxdoo命令行界面这个项目已经动弹了请注意,Qooxdoo命令行界面仍然运行良好,并且已经集成到项目中,因此在此存储库上不应做进一步的工作。 将不建议使用npm模块qx-cli ,从现在开始,您要做的所有事情是: $ npm ...

    Qooxdoo工具「Qooxdoo Tools」-crx插件

    扩展开发工具,添加一个侧栏,显示与所选DOM元素相关联的Qooxdoo数据。 扩展开发人员工具,添加侧边栏,以显示与所选DOM元素关联的Qooxdoo数据。 在控制台中使用$ q与选定的小部件一起使用。 支持语言:English ...

    qooxdoo-contrib-开源

    qooxdoo-contrib是qooxdoo项目(http://qooxdoo.org)的组成部分。 用户可以在简洁的结构中灵活地开发,维护和促进贡献。 贡献可以轻松地集成到自定义qooxdoo应用程序中。 注意:SourceForge上的此存储库是旧版! 它...

Global site tag (gtag.js) - Google Analytics