刷新SAPUI5应用程序中的片段



在我的SAPUI5应用程序中,我有一个不更新数据的JS片段。如果我刷新窗口,我会正确地获得数据,但我需要使用window.location.reload((.

您可以检查以下代码:

onInit: function () {
var oRouters = sap.ui.core.UIComponent.getRouterFor(this);
oRouters.getRoute("chartContainer").attachPatternMatched(this._onObjectMatched, this);
},
_onObjectMatched: function (oEvent) {
var sYear   = oEvent.getParameter("arguments").Year;
var sMonth  = oEvent.getParameter("arguments").Month;
var sGroup = oEvent.getParameter("arguments").Group;
var sCurrency  = oEvent.getParameter("arguments").Currency;
if (sYear === undefined && sMonth === undefined && sGroup === undefined && sCurrency === undefined){
var oStartupParameters = this.getOwnerComponent().getComponentData().startupParameters;
sYear   = oStartupParameters.Year;
sMonth  = oStartupParameters.Month;
sGroup = oStartupParameters.Group;
sCurrency  = oStartupParameters.Currency
}
var sServiceUrl = "/sap/opu/odata/sap/Z_TEST/";
var filterYear   = new sap.ui.model.Filter("Year",   sap.ui.model.FilterOperator.EQ, sYear);
var filterMonth  = new sap.ui.model.Filter("Month",  sap.ui.model.FilterOperator.EQ, sMonth);
var filterGroup = new sap.ui.model.Filter("Group", sap.ui.model.FilterOperator.EQ, sGroup);
var filterCurrency  = new sap.ui.model.Filter("Currency",  sap.ui.model.FilterOperator.EQ, sCurrency);
var oModelOdata = new sap.ui.model.odata.v2.ODataModel(sServiceUrl, {
    json: true,
    loadMetadataAsync: true
       });
var oModel = new sap.ui.model.json.JSONModel();
oModelOdata.read("/DataSet",{
filters: [filterYear, filterMonth, filterGroup, filterCurrency],
success: function(oData, response) {
var oResults = oData.results;
oModel.setData(oData);
var oView = sap.ui.getCore().byId("__xmlview0");
if (oView !== undefined){
oView.setModel(oModel);
}else{

window.location.reload(); // It works correctly butI would like not to have to reload the whole page.

}
}
});
},

如何在不刷新整个页面的情况下刷新视图?

提前感谢您的支持Sergio

您应该使用refresh()方法刷新模型:

oModelOdata.read("/DataSet",{
filters: [filterYear, filterMonth, filterGroup, filterCurrency],
success: function(oData, response) {
var oResults = oData.results;
oModel.setData(oData);
var oView = sap.ui.getCore().byId("__xmlview0");
if (oView !== undefined){
oView.setModel(oModel);
}else{
oModel.refresh(); // refresh new model data bindings
}
}
});

在进行API调用以获取数据时,还应该使用promises

最新更新