按下按钮后设置忙指示

时间:2017-05-18 10:54:09

标签: sapui5

我有一个简单的场景,按下按钮并执行onSearchExisting函数。在该函数中,我打开一个包含表格的对话框。我在onSearchExisting函数中获取的表的数据。由于数据提取需要一些时间,我想设置触发此功能的按钮为忙。 代码在函数中如下所示:

onSearchExisting : function() {                                                 
    var oButton = this.getView().byId("searchButton");
    oButton.setBusy(true);
    oButton.setBusyIndicatorDelay(0); 

    var oView = this.getView();
    var oDialog = oView.byId("dialog2ID");  
    if (!oDialog) {
        oDialog = sap.ui.xmlfragment(oView.getId(),"xxx.view.fragment.SearchExisting",this);
                                            oView.addDependent(oDialog);
     }

     var oDataModel = new 
     sap.ui.model.odata.ODataModel("/sap/opu/odata/xxxx", true);
     this.getView().byId("tableSearchFrgId").getBinding("items");

     oButton.setBusy(false);    
     oDialog.open();
 },

按钮没有设置为忙,当我按下它时,我做错了什么?

2 个答案:

答案 0 :(得分:1)

绑定以异步方式发生,因此oButton.setBusy(false);将在oButton.setBusy(true);之后立即执行。

我建议您使用" dataReceived'绑定事件并在此事件的事件处理程序中写入oButton.setBusy(false);

在这里阅读更多内容。 https://help.sap.com/saphelp_nw751abap/helpdata/en/1a/010d3b92c34226a96f202ec27e9217/content.htm

答案 1 :(得分:1)

执行setBusy(false)语句时,只传递了几毫秒。您应该将此语句放在oData调用的成功函数中。

oData调用是异步的,因此即使尚未检索到数据,也会立即执行下一行。