Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 自定义控件-如何在另一个控件中封装聚合_Javascript_Custom Controls_Aggregation_Sapui5 - Fatal编程技术网

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

Javascript 自定义控件-如何在另一个控件中封装聚合,javascript,custom-controls,aggregation,sapui5,Javascript,Custom Controls,Aggregation,Sapui5,我可能在这方面做得不对,但我想创建一个自定义控件,它是sap.m.Dialog的子类。这个新控件将有一个聚合“leftImage”,然后将其放置在HorizontalLayout(私有变量)中。但是,这可能会导致错误,因为“leftImage”已经依赖于我的控件 那么,如何在另一个控件上封装聚合呢?sap.m.Dialog已经有一个“内容”聚合,用于保存要呈现的控件,因此您只需在其中添加自定义位 因此,这样的模式应该有效: sap.ui.define([ "jquery.sap.glob

我可能在这方面做得不对,但我想创建一个自定义控件,它是sap.m.Dialog的子类。这个新控件将有一个聚合“leftImage”,然后将其放置在HorizontalLayout(私有变量)中。但是,这可能会导致错误,因为“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定义为关联,因为它将由HorizontalLayout聚合。稍后可通过以下方式访问:

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

您可能还想将HorizontalLayout定义为一个关联,这样您也可以向其中添加更多内容。

这正是我想要的!谢谢