getBindingContext()返回undefined

时间:2016-04-28 11:53:07

标签: sapui5

我正在开发一个SplitApp。在从列表中选择项目时,它会显示

  

未捕获的TypeError:无法读取属性' getPath'未定义的

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()返回undefined。所以我认为问题在于绑定上下文。

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");

显示列表但是当我选择项目时,会抛出错误。

2 个答案:

答案 0 :(得分:9)

  

getBindingContext(sModelName?)

     

获取给定模型名称的此对象的绑定上下文。如果对象没有自己设置绑定上下文并且没有自己的模型集,它将使用其父层次结构中定义的第一个绑定上下文。

您已为模型命名(this.setModel(oModel, "data"))。 访问绑定上下文时指定模型名称(oItem.getBindingContext('data'))。

答案 1 :(得分:3)

尝试:

entity: oItem.getBindingContext("data").getPath().substr(1),  

如果已命名绑定模型,则必须将模型名称传递给&#39; getBindingContext()&#39;