javascript - 自定义控件 - 如何将聚合封装在另一个控件中

标签 javascript custom-controls aggregation sapui5

我可能会解决这个错误,但我想创建一个作为 sap.m.Dialog 子类的自定义控件。这个新控件将有一个聚合“leftImage”,然后将其放置在 Horizo​​ntalLayout (私有(private)变量)中。但是,这可能会导致错误,因为“leftImage”已经依赖于我的控件。

那么如何在另一个控件上封装聚合?

最佳答案

sap.m.Dialog 已经有一个“内容”聚合,它保存要呈现的控件,因此您只需在其中添加自定义位即可。

所以,像这样的模式应该有效:

sap.ui.define([
    "jquery.sap.global",
    "sap/m/Dialog",
    "sap/m/Image",
    "sap/ui/layout/HorizontalLayout"
], function(jQuery, Dialog, Image, HorizontalLayout) {
    "use strict";

    var MyDialog = Dialog.extend("sap.ui.mylib.MyDialog", {
        metadata: {
            library: "sap.ui.mylib",
            associations: {
                leftImage: {type: "sap.m.Image", multiple: false}
            }
        },
        renderer: {
            // inherit rendering from sap.m.Dialog
        }
    });

    MyDialog.prototype.init = function() {
        if (Dialog.prototype.init) {
            Dialog.prototype.init.apply(this, arguments);
        }

        var oImage = new Image({
                src: '...'
            }),
            oHorizontalLayout = new HorizontalLayout({
                content: [
                    oImage
                ]
            });

        this.addContent(oHorizontalLayout);
    };

    return MyDialog;
}, /* bExport= */ true);

leftImage定义为关联,因为它将由Horizo​​ntalLayout聚合。稍后可以通过以下方式访问它:

var oLeftImage = sap.ui.getCore().byId(oMyDialog.getLeftImage());

您可能还想将 Horizo​​ntalLayout 定义为关联,以便您也可以向其中添加更多内容。

关于javascript - 自定义控件 - 如何将聚合封装在另一个控件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32520705/

相关文章:

url - Elasticsearch:URL的聚合

javascript - 复制到剪贴板 - 不适用于 FF,Chrome

javascript - 请求一个 html var 并传递给 JS

ios - 无法在 Identity Inspector 中设置自定义 UITextView

java - onLongClick 多类自定义按钮

python - 返回组中所有唯一的聚合

javascript - 你如何在 html 文件中创建一个其构造函数需要参数的组件?

javascript - 使用 javascript 中的最少脚本从 json 对象获取第五级子值

java - 自定义 JavaFX 8 对象

python - Django 模型 : how to return a default value in case of a non-existing foreign-key relationship?