在收到数据之前隐藏控件

时间:2019-01-21 09:30:39

标签: javascript sapui5

我有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,即使按钮满足可见条件,按钮也永远不会变得可见。

2 个答案:

答案 0 :(得分:0)

您需要将HoldButtonVisiblity模型中的HoldButtonVisible初始化为false。未定义时,该按钮仍然可见。

答案 1 :(得分:0)

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

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

{
    "HoldButtonVisible": false
}

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

请注意,我已经使用了您的代码,但是我不知道您从何处获取aData信息,也不知道activeFlag的值类型。如果不是布尔值,请进行转换。