2017-05-18 2 views
0

Ich habe ein einfaches Szenario, eine Taste gedrückt wird und die Funktion onSearchExisting ausgeführt wird. In der Funktion öffne ich einen Dialog, der eine Tabelle enthält. Die Daten für die Tabelle, die ich in der onSearchExisting-Funktion abrufe. Da das Abrufen von Daten einige Zeit in Anspruch nimmt, möchte ich die Schaltfläche, die diese Funktion auslöst, auf "busy" setzen. Der Code sieht wie folgt in der Funktion:Einstellung Busy-Indikator nach dem Drücken der Taste

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(); 
}, 

Die Taste gesetzt ist nicht viel los, wenn ich es drücken, was mache ich falsch?

Antwort

1

Wenn die Anweisung setBusy (false) ausgeführt wird, sind nur wenige Millisekunden vergangen. Sie sollten diese Anweisung in eine Erfolgsfunktion des oData-Aufrufs aufnehmen.

Ein oData-Aufruf ist asynchron, daher wird die nächste Zeile sofort ausgeführt, auch wenn die Daten noch nicht abgerufen wurden.

Verwandte Themen