sapui5 - getBindingContext() Devuelve undefined
(2)
getBindingContext(sModelName?)Obtenga el contexto de enlace de este objeto para el nombre del modelo dado. Si el objeto no tiene un contexto de enlace establecido en sí mismo y no tiene un conjunto de modelos propio, utilizará el primer contexto de enlace definido en su jerarquía principal.
Le has dado nombre al modelo (
this.setModel(oModel, "data")
).
Especifique el nombre del modelo (
oItem.getBindingContext(''data'')
) mientras accede al
Contexto de enlace
.
Estoy trabajando en una SplitApp. Al seleccionar un elemento de la lista, dice
TypeError no capturado: no se puede leer la propiedad ''getPath'' de undefined
Master.controller.js
onSelect: function(oEvent) {
this.showDetail(oEvent.getParameter("listItem") || oEvent.getSource());
},
showDetail: function(oItem) {
var bReplace = jQuery.device.is.phone ? false : true;
this.getRouter().navTo("detail", {
from: "master",
entity: oItem.getBindingContext().getPath().substr(1),
tab: this.sTab
}, bReplace);
}
oItem.getBindingContext()
devuelve
undefined
.
Así que creo que el problema es con el contexto vinculante.
Master.view.xml
<List id="list"
select="onSelect"
mode="SingleSelect"
noDataText="{i18n>masterListNoDataText}"
growing="true"
growingScrollToLoad="true"
items="{data>/results}"
>
<items id="masterList">
<ObjectListItem id="listItem"
press="onSelect"
type="{device>/listItemType}"
counter="0"
title="{data>PROJECTNAME}"
number="{data>REVENUE}"
numberUnit="{data>CURRENCY}"
markFavorite="false"
markFlagged="false"
showMarkers="true"
/>
</items>
</List>
Component.js
var oModel= new sap.ui.model.json.JSONModel();
oModel.loadData("Data.json");
this.setModel(oModel,"data");
Se muestra la lista, pero cuando selecciono el elemento, se produce el error.
Tratar:
entity: oItem.getBindingContext("data").getPath().substr(1),
Debe pasar el nombre del modelo a ''getBindingContext ()'', si se ha nombrado el modelo vinculado.