2017-03-25 4 views
-2

구매 주문을위한 피오리 앱을 개발 중입니다. 메신저 헤더 데이터를 바인딩하지만 헤더 데이터의 항목 데이터를 바인딩 아니에요. 내 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 집계를; 예컨대 : 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' 
    });