SAP UI5表数据绑定JS

时间:2017-03-25 11:43:40

标签: javascript data-binding sapui5 sap-fiori

我正在为采购订单开发fiori app。我绑定标头数据,但我没有绑定标头数据中的项目数据。 我的json数据:"E_HEADER":[ { "BUKRS":"9000", "EBELN":"4802000006", "LIFNR":"0000200040", "NAME_LIFNR":"TİC.LTD.Ş", "KUNNR":"", "NAME_KUNNR":"", "AEDAT":"2015-08-10", "ERNAM":"", "FRGGR":"10", "FRGKE":"X", "FRGRL":"X", "FRGZU":"", "FRGSX":"01", "WAERS":"USD", "ZTERM":"", "BEDAT":"2015-08-10", "EBELP":"00000", "NETWR_ITEM":0.0, "ITEM":[ { "EBELN":"4802000006", "EBELP":"00010", "MATNR":"000000004000000945", "MAKTX":"(ÇİFT)", "WERKS":"1000", "NAME_WERKS":" A.Ş.", "LGORT":"TS03", "LGOBE":"-Seym", "MENGE":0.0, "MEINS":"KI", "NETPR":1.5, "NETWR":0.0} ] },

  

sap.ui.controller(“sasony.Detail”,{   onInit:function(){

    this.router = sap.ui.core.UIComponent.getRouterFor(this);
    this.router.attachRoutePatternMatched(this._handleRouteMatched, this);

},

_handleRouteMatched: function(evt) {

    this.catIndex = evt.getParameter("arguments").catIndex;
    this.subCatIndex = evt.getParameter("arguments").subCatIndex;

    var context = sap.ui.getCore().byId("App").getModel('header').getContext('/' + this.catIndex + '/ITEM/' + this.subCatIndex);

    this.getView().setBindingContext(context,'item');

},

goBack: function() {

    this.router.navTo("");

}

});

详细视图

      var oTable = new sap.m.Table({
        id:"oTable",
        inset : true, 
        headerDesign : sap.m.ListHeaderDesign.Standard,
        columns : [ new sap.m.Column({
            header :[ new sap.m.Label({text : "Belge No"}) ]
                   }),
                   new sap.m.Column({
            header :[ new sap.m.Label({text : "Kalem No"}) ]
                   }),
]
                    });
                  oTable.bindItems("item>/", new sap.m.ColumnListItem("listItem",{
          cells : [ 
                    new sap.m.Text({text : "{item>EBELN}"}),
                    new sap.m.Text({text : "{item>EBELP}"}),
                  ]
    }));

请帮忙。

最好的问候

1 个答案:

答案 0 :(得分:0)

您没有正确使用setBindingContext(oContext, sModelName)

  

{string} sModelName?用于设置或未定义

的上下文的模型的名称

我假设您没有item模型,而是拥有header模型(我看到您在控制器中引用)。无论如何,绑定上下文仅在您使用 relative 绑定时使用(绑定路径不以/开头)。

此外,我了解您将表格绑定到所选标题的选定项目(例如/E_HEADER/0/ITEM/0)。这实际上没有意义,因为在您的示例中,它自己的单个项不是集合(这样做会导致每个项属性有一个表行)。

通常在UI5中,您将使用相同的header模型与相对绑定相结合。这意味着您必须更改以下内容:

  • 更改表的items聚合绑定以使用header模型和相对绑定;例如:oTable.bindItems("header>SOMETHING" //...
  • 更改文本绑定以使用标题模型:new sap.m.Text({text : "{header>EBELN}"})
  • _handleRouteMatched内的视图绑定到路径:
  // it is prefferable to use bind element (creates a binding context
  // "behind the scenes")
  this.getView().bindElement({
      path: '/' + this.catIndex + '/ITEM/' + this.subCatIndex,
      model: 'header'
  });