我正在开发一个SplitApp。在从列表中选择项目时,它会显示
未捕获的TypeError:无法读取属性' getPath'未定义的
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()
返回undefined
。所以我认为问题在于绑定上下文。
<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>
var oModel= new sap.ui.model.json.JSONModel();
oModel.loadData("Data.json");
this.setModel(oModel,"data");
显示列表但是当我选择项目时,会抛出错误。
答案 0 :(得分:9)
getBindingContext(sModelName?)
获取给定模型名称的此对象的绑定上下文。如果对象没有自己设置绑定上下文并且没有自己的模型集,它将使用其父层次结构中定义的第一个绑定上下文。
您已为模型命名(this.setModel(oModel, "data")
)。
访问绑定上下文时指定模型名称(oItem.getBindingContext('data')
)。
答案 1 :(得分:3)
尝试:
entity: oItem.getBindingContext("data").getPath().substr(1),
如果已命名绑定模型,则必须将模型名称传递给&#39; getBindingContext()&#39;