我正在为采购订单开发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}"}), ] }));
请帮忙。
最好的问候
答案 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'
});