【问题标题】:How to reload a component in SAPUI5?如何在 SAPUI5 中重新加载组件?
【发布时间】:2019-09-07 00:03:45
【问题描述】:

我有一个 SAPUI5 应用程序,它使用 sap.ui.core.ComponentContainer 在其内部加载其他应用程序。类似于 fiori 启动板的东西。但令人惊讶的是,当我从页面中删除组件容器并稍后尝试重新加载它时,它将被添加到 HTML 页面中但不会显示。

var oPage = this.getView().byId("page");
    oPage.removeAllContent();
    if(!this._aComps[sObjectId]){
        this._aComps[sObjectId] = new sap.ui.core.ComponentContainer({ name: sObjectName});
    }
    oPage.addContent(this._aComps[sObjectId]);

知道它只在初始化时显示的原因是什么吗?

虽然此代码始终有效:

var oPage = this.getView().byId("page");
    oPage.removeContent();
    oPage.addContent(new sap.ui.core.ComponentContainer({ name: sObjectName}));

【问题讨论】:

    标签: sapui5


    【解决方案1】:

    经过大量调查,我似乎在 SAPUI5 中发现了一个错误。

    删除 ComponentContainer 并再次添加后发生的情况是 SAPUI5 从组件容器元素中删除了 style="height: 100%;"

    它似乎在再次添加后不会将高度恢复为默认值。我还测试了setVisible 函数,问题也存在在那里。

    所以我们要做的是:

    var oPage = this.getView().byId("page");
        oPage.removeAllContent();
        if(!this._aComps[sObjectId]){
            this._aComps[sObjectId] = new sap.ui.core.ComponentContainer({ name: sObjectName});
        }
        oPage.addContent(this._aComps[sObjectId]);
        this._aComps[sObjectId].setHeight("100%"); // Set the height to 100% again!
    

    注意: 它不仅会删除组件容器本身的height: 100%;,还会删除其他一些父元素。请专心看图!虽然这个解决方案对我有用,但在其他用例中可能需要设置其他一些元素的高度!

    【讨论】:

    • 好发现!如果是bug,能否将其记录在openUI5 github上以便解决?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-09
    • 2018-02-22
    • 2018-08-13
    • 2018-08-30
    • 2020-07-18
    • 2021-02-17
    • 2019-03-03
    相关资源
    最近更新 更多