【问题标题】:Refresh Fragment in SAPUI5 ApplicationSAPUI5 应用程序中的刷新片段
【发布时间】:2018-12-03 10:48:20
【问题描述】:

在我的 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.

                     
                       }
                       }
                       });
       },

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

提前感谢您的支持 塞尔吉奥

【问题讨论】:

    标签: javascript sapui5


    【解决方案1】:

    您应该使用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

    【讨论】:

      猜你喜欢
      • 2015-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-29
      • 2016-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多