【问题标题】:sapui5 Not able to display data in detail pagesapui5 无法在详细页面显示数据
【发布时间】:2020-03-08 23:31:05
【问题描述】:

我在详细信息页面中显示数据时遇到问题。我已经尝试了几乎所有东西,但它的dosnt工作。在主页上一切看起来都很好。路由工作(在网络地址上显示正确的 ID)。

Details.controller.js:

return Controller.extend("sapProject.controller.Details", {
        onInit: function () {
            var oTable = this.getView().byId("details");
            var oModel = new sap.ui.model.json.JSONModel();
            oModel.loadData("model/Object.json");
            oTable.setModel(oModel);
  var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
  oRouter.getRoute("Details").attachMatched(this._onRouteMatched, this);
},

        _onRouteMatched : function (oEvent) {
  var oArgs, oView;
  oArgs = oEvent.getParameter("arguments");
  oView = this.getView();
  oView.bindElement({
    path : "/Objects(" + oArgs.employeeId + ")",
    events : {
      dataRequested: function () {
        oView.setBusy(true);
      },
      dataReceived: function () {
        oView.setBusy(false);
      }
    }
  });
},

这是我的 Details.view.xml:

    <Page
        id="details"

        title="{i18n>EmployeeDetailsOf} {FirstName} {LastName}"
        showNavButton="true"
        navButtonPress="onBack"
        class="sapUiResponsiveContentPadding">
        <content>
            <Panel

                width="auto"
                class="sapUiResponsiveMargin sapUiNoContentPadding">
                <headerToolbar >
                    <Toolbar>
                        <Title text="{i18n>EmployeeIDColon} {EmployeeID}" level="H2"/>
                        <ToolbarSpacer />
                    </Toolbar>
                </headerToolbar>
                <content>
                    <f:SimpleForm>
                        <f:content>
                            <Label text="{i18n>FirstName}" />
                            <Text text="{FirstName}" />
                            <Label text="{i18n>LastName}" />
                        </f:content>
                    </f:SimpleForm>
                </content>
            </Panel>
        </content>
    </Page>

【问题讨论】:

  • 控制台有错误信息吗?

标签: sapui5


【解决方案1】:

我认为您正在将一个空模型绑定到您的详细视图,因为当您在 Table 上设置模型时,loadData 函数可能没有完成。

尝试在清单中加载您的 json 文件(最佳选择)或在 _onRouteMatched 函数上更改 setModel(尽管我在您的详细视图中没有看到任何表格)。

编辑: 也可以在 oModel.loadData("model/Object.json"); 之后使用这段代码

oModel.attachEventOnce("requestCompleted", function(oEvent) {       
  // Here your file is fully loaded     
});

【讨论】:

    【解决方案2】:

    首先我建议你这样绑定:

    var sObjectPath = this.getModel().createKey("Objects", {
                ID: oArgs.employeeId
            });
            this._bindView("/" + sObjectPath);
    ...
    }
    
    
    _bindView: function (sObjectPath) {
                //Todo: Set busy indicator during view binding
    
                this.getView().bindElement({
                    path: sObjectPath,
                    parameters: {
    
                    },
                    events: {
                        change: this._onBindingChange.bind(this),
                        dataRequested: function () {
    
                        }.bind(this),
                        dataReceived: function () {
    
                        }.bind(this)
                    }
                });
            },
    

    其次检查 oArgs.employeeId 是否具有有效值以及模型是否加载了数据,轻松设置断点或编写 console.log(this.getView().getModel().oData)。

    【讨论】:

      猜你喜欢
      • 2019-04-03
      • 1970-01-01
      • 1970-01-01
      • 2018-04-27
      • 1970-01-01
      • 2020-10-20
      • 1970-01-01
      • 1970-01-01
      • 2021-07-04
      相关资源
      最近更新 更多