2017-03-25 36 views
-2

我正在爲採購訂單開發fiori應用程序。 Im綁定標題數據,但我沒有綁定標題數據中的項目數據。 我的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 UI5表數據綁定JS

sap.ui.controller( 「sasony.Detail」,{ 的OnInit:函數(){

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}"}), 
        ] 
    })); 

請幫助。

問候

回答

0

您沒有使用正確setBindingContext(oContext, sModelName)

{string} sModelName?該模型的名稱設置上下文或未定義

我假設你沒有一個item模型,而是你有一個header模型(我看你是在引用您的控制器)。無論如何,綁定上下文僅在您使用相對綁定(綁定路徑不以/開頭)時纔會使用。

此外,據我所知,你是綁定表與選定標題的選定項目(例如/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' 
    });