首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qooxdoo对话框

Qooxdoo对话框
EN

Stack Overflow用户
提问于 2011-09-13 12:47:49
回答 1查看 2.1K关注 0票数 2

我想在Qooxdoo应用程序中有一些对话框,但我不知道如何在某些情况下定义它们。

在Qooxdoo演示中(它是窗口小部件示例,函数getModalWindow2),我看到窗口可以像一个简单的JS函数一样定义,返回它的窗口小部件。在Qooxdoo中有更好的制作对话的方法吗?

据我所知,我可以为对话框窗口定义类,并为这个类设置一些类属性。那么,如何在应用程序中添加一些复杂表单的对话框呢?

例如,它可以是服务器上的用户目录树。在用户按下“确定”按钮后,树的选定元素必须存储在对话框类的对象中的某个位置,该对话框将被关闭。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-15 21:07:18

现在我找到了我自己问题的答案(在俄语blog中关于Qooxdoo,我将在这里翻译答案)。

因此,在主应用程序和对话框的单独文件中有单独的类。

在对话框中,我们通过此事件添加结果输出的qx.event.type.Data

例如,我们有一个名为"custom“的Qooxdoo应用程序,就像在文档中一样。

在Application.js中,我们将此代码与类一起使用:

代码语言:javascript
复制
    // Adding dialog window
    this.__uiWindow = new custom.UserDialog();
    this.__uiWindow.moveTo(320, 30);
    this.__uiWindow.open();

    // Adding the listener for pressing "Ok"
    this.__uiWindow.addListener("changeUserData", function (e) {
        this.debug(e.getData());
    });

e.getData()给出了结果信息。

然后,我们必须为该类创建名为UserDialog.js的文件,其中包含事件和表单:

代码语言:javascript
复制
    qx.Class.define("custom.UserDialog", {
        extend: qx.ui.window.Window,
        events: {
            "changeUserData": "qx.event.type.Data"
        },
        construct: function () {
            this.base(arguments, this.tr("User info"));

            // Layout
            var layout = new qx.ui.layout.Basic();
            this.setLayout(layout);
            this.setModal(true);

            this.__form = new qx.ui.form.Form();

            // User id field
            var usrId = new qx.ui.form.TextField();
            this.__form.add(usrId, this.tr("ID"), null, "Id");

            // User password field
            var usrPassword = new qx.ui.form.PasswordField();
            usrPassword.setRequired(true);
            this.__form.add(usrPassword, this.tr("Password"), null, "Password");

            // Adding form controller and model
            var controller = new qx.data.controller.Form(null, this.__form);
            this.__model = controller.createModel();

            // Save button
            var okbutton = new qx.ui.form.Button(this.tr("Ok"));
            this.__form.addButton(okbutton);
            okbutton.addListener("execute", function () {
                if (this.__form.validate()) {
                    var usrData = qx.util.Serializer.toJson(this.__model);
                    this.fireDataEvent("changeUserData", usrData);
                    this.close();
                };
            }, this);

            // Cancel button
            var cancelbutton = new qx.ui.form.Button(this.tr("Cancel"));
            this.__form.addButton(cancelbutton);
            cancelbutton.addListener("execute", function () {
                this.close();
            }, this);

            var renderer = new qx.ui.form.renderer.Single(this.__form);
            this.add(renderer);
        }
    });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7396935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档