在收到数据前隐藏控件

Hide control before data received

我有 UI5 按钮。根据来自后端的某些数据,此按钮设置为可见。

因此,我在控制器文件的 onDataReceived 函数中设置了按钮的可见性。

<Button id="idButton" visible="{HoldButtonVisiblity>/HoldButtonVisible}"/>

控制器中的代码:

onDataReceived: function (oEvent) {
    var sHoldVisible = aData[0].activeFlag;
    if(sHoldVisible) {
        //make button visible
    } else {
        //make button invisible
    }
}

这很好用。但是,问题是,当我启动应用程序时,数据需要 3-4 秒才能加载到工作列表视图中。在此期间,按钮仍然对用户可见。它在接收到数据后变得不可见。

我的问题是,如何在应用程序初始化时隐藏按钮?我试过这段代码:

<Button id="idButton" visible="false"/>

但是,如果我在视图文件中设置 visible=false,即使按钮满足可见条件,它也永远不会可见。

您需要将 HolButtonVisiblity 模型中的 HolButtonVisible 初始化为 false。虽然未定义,但按钮仍然可见。

我认为您应该添加更多信息以解决您的问题。 您的 HolButtonVisiblity JSONModel 是否在开始时初始化?

您应该做的是初始化它(在您的 manifest.json 或 Component.js 中),例如:

{
    "HoldButtonVisible": false
}

onDataReceived: function (oEvent) {
    var sHoldVisible = aData[0].activeFlag;
    this.getView().getModel("HoldButtonVisiblity").setProperty("/HoldButtonVisible", sHoldVisible);
}

请注意,我使用了您的代码,但我不知道您从哪里获得 aData 信息,也不知道 activeFlag 的值类型。如果它不是布尔值,请转换它。