等效于非 Item 控件的 getBindingContextPath

Equivalent for `getBindingContextPath` for non Item controls

我的应用程序有问题。我希望我的编辑按钮将我发送到一个新页面(“ModificationPage”)中,我可以在其中修改我的信息,但它需要我的“OT”的编号,以便我可以检索我在“DetailPage”上已有的信息。

这个数字其实在我的URL的末尾(因为我们是根据它导航到详情页的)但是我不知道怎么取,因为getBindingContextPath不起作用一个按钮。

详细页面:

修改页面:

DetailPage.view.xml :

<mvc:View controllerName="com.gima.zmaintenanceot.controller.DetailPage"
  xmlns:mvc="sap.ui.core.mvc"
  xmlns="sap.m">
  <Page id="detailPage"
    title="Détails de l'OT : {maintenanceOT>OrderNumber}"
    showNavButton="true"
    navButtonPress="onNavBack"
    showFooter="true"
    showHeader="true">
    <headerContent>
      <OverflowToolbar>
        <ToolbarSeparator/>
        <Button icon="sap-icon://edit" press=".onNavToModif"/>
      </OverflowToolbar>
    </headerContent> 
    <!-- ... -->
  </Page>
<mvc:View>

DetailPage.controller.js

onNavToModif: function (oEvent) {
  var sPath = oEvent.getSource().getBindingContextPath() + "/OrderNumber";
  var sOrderNumber = this.getModel("maintenanceOT").getProperty(sPath);
  this.navTo("modif", {
    OrderNumber: sOrderNumber
  });
},

manifest.json

"routes": [
  {
    "pattern": "modif/{OrderNumber}",
    "name": "modif",
    "target": "modif"
  }
],
"targets": {
  "modif": {
    "viewPath": "com.gima.zmaintenanceot.view",
    "viewName": "ModificationPage",
    "viewLevel": 3
  }
}

路径使用getBindingContext to access the bound context, then call getPath。例如:

onNavToModif: function(oEvent) {
  const oContext = oEvent.getSource().getBindingContext(/*modelName*/);
  const sPath = oContext.getPath("OrderNumber");
  // ...
},

API getPath 还等待一个可选的后缀 will be appended to the return value.


getBindingContextPath is protected 的可见度。 不要在应用程序开发中使用它。