我有一个简单的场景,按下按钮并执行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 :(得分: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调用是异步的,因此即使尚未检索到数据,也会立即执行下一行。