Javascript 如何知道所有odata调用在屏幕上完成?
我在一个屏幕上有多个odata调用,它们不在批处理调用中。我想在所有调用完成后触发一个事件。如何操作?您可以使用Javascript 如何知道所有odata调用在屏幕上完成?,javascript,jquery,sapui5,sap-fiori,Javascript,Jquery,Sapui5,Sap Fiori,我在一个屏幕上有多个odata调用,它们不在批处理调用中。我想在所有调用完成后触发一个事件。如何操作?您可以使用sap.ui.model.odata.v2.ODataModel的事件batchRequestCompleted(oControlEvent)。从文档中可以看出:batchRequestCompleted事件在请求完成后(包括接收响应)被触发,无论请求是否成功 将以下代码添加到您的模型中,每次模型完成请求时都会调用这些代码 this.getView().getModel().attac
sap.ui.model.odata.v2.ODataModel的事件batchRequestCompleted(oControlEvent)
。从文档中可以看出:batchRequestCompleted
事件在请求完成后(包括接收响应)被触发,无论请求是否成功
将以下代码添加到您的模型中,每次模型完成请求时都会调用这些代码
this.getView().getModel().attachRequestCompleted(函数(){console.log(“complete!”);})代码>如果使用表,则可以在每次读取完成时使用事件通知
<Table headerText="tab1"
updateFinished="onTableUpdate"
items="{/Collection}"...
<Table headerText="tab2"
updateFinished="onTableUpdate"
items="{/Collection}"...
<Table headerText="tab3"
updateFinished="onTableUpdate"
items="{/Collection}"...
您需要一个方法,在每个表完成更新时将这些标志设置为true
onTableUpdate: function(oEvent){
var oTable= oEvent.getSource(),
sText = oTable.getHeaderText();
this.oComplete[sText] = true;
//Check if all read's are complete
if(this.oComplete["tab1"] && this.oComplete["tab2"] && this.oComplete["tab3"]){
this._updateFinished();
}
},
_updateFinished : function(){
//Add you logic which should run after all call's complete
...
}
完成后,将触发_updateFinished
注意:updateFinished事件适用于所有扩展sap.m.ListBase的控件,以了解所有调用是否已完成是一件棘手的事情。您使用的是表格还是列表?如果是的话,那么有一种方法我在屏幕上主要有表格。比如说,我有5个表,在一个屏幕上读取来自5个不同实体集的数据。有5个不同的odata电话在呼叫他们。那我怎么知道所有的电话都打完了?我没有一个电话。
onTableUpdate: function(oEvent){
var oTable= oEvent.getSource(),
sText = oTable.getHeaderText();
this.oComplete[sText] = true;
//Check if all read's are complete
if(this.oComplete["tab1"] && this.oComplete["tab2"] && this.oComplete["tab3"]){
this._updateFinished();
}
},
_updateFinished : function(){
//Add you logic which should run after all call's complete
...
}