我在一个屏幕上有多个odata呼叫,但它们不在批量呼叫中。我希望在所有调用完成后触发事件。我该怎么做?
答案 0 :(得分:0)
您可以使用sap.ui.model.odata.v2.ODataModel的Event batchRequestCompleted(oControlEvent)。从文档中:在请求完成后(包括接收响应),无论请求是否成功,都会触发'batchRequestCompleted'事件。
答案 1 :(得分:0)
将以下代码添加到模型中,每次模型完成请求时都会调用该代码。
this.getView().getModel().attachRequestCompleted(function(){console.log("complete!");});
答案 2 :(得分:0)
如果使用Tables,则可以使用updateFinished事件在每次读取完成时通知。
<Table headerText="tab1"
updateFinished="onTableUpdate"
items="{/Collection}"...
<Table headerText="tab2"
updateFinished="onTableUpdate"
items="{/Collection}"...
<Table headerText="tab3"
updateFinished="onTableUpdate"
items="{/Collection}"...
要进行检查,您必须在初始化时保持标记
onInit: function () {
this.oComplete = {
"tab1" : false,
"tab2" : false,
"tab3" : false
}
当每个表完成更新时,您将需要一个将这些标志设置为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
的所有控件