2017-05-18 18 views
0

簡単なシナリオがあります。ボタンが押され、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(); 
}, 

、私はそれを押したときに、私が間違って何をやっていますか?

答えて

0

バインディングは非同期に発生するため、oButton.setBusy(false);oButton.setBusy(true);の直後に実行されます。

私はバインディングの 'dataReceived'イベントを使用し、oButton.setBusy(false);をこのイベントのイベントハンドラ内に書き込むことをお勧めします。

詳細はこちらをご覧ください。 https://help.sap.com/saphelp_nw751abap/helpdata/en/1a/010d3b92c34226a96f202ec27e9217/content.htm

1

setBusy(false)文が実行されるときまでにわずか数ミリ秒が経過しています。この文は、oDataコールの成功関数に入れる必要があります。

oDataコールは非同期であるため、データがまだ取得されていない場合でも次の行は即時に実行されます。

関連する問題