Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

getBindingContext() returns undefined

Tags:

sapui5

I am working on a SplitApp. On selecting an item from the list, it says

Uncaught TypeError: Cannot read property 'getPath' of undefined

Master.controller.js

onSelect: function(oEvent) {
  this.showDetail(oEvent.getParameter("listItem") || oEvent.getSource());
},

showDetail: function(oItem) {
  // ...
  this.getRouter().navTo("detail", {
    from: "master",
    entity: oItem.getBindingContext().getPath().substr(1), // Error
    tab: this.sTab
  }, bReplace);
},

oItem.getBindingContext() returns undefined. So I believe the problem is with binding context.

Master.view.xml

<List id="list" growing="true" items="{data>/results}">
  <ObjectListItem id="listItem"
    title="{myModel>PROJECTNAME}"
    number="{myModel>REVENUE}"
    numberUnit="{myModel>CURRENCY}"
    press=".onSelect"
  />
</List>

Component.js

// JSONModel required from "sap/ui/model/json/JSONModel"
var oModel= new JSONModel();
oModel.loadData("Data.json");
this.setModel(oModel,"myModel");

The list is displayed but when I select the item, the error is thrown.

like image 302
FEBzX Avatar asked Apr 28 '16 11:04

FEBzX


2 Answers

getBindingContext(sModelName?)

Get the binding context of this object for the given model name. If the object does not have a binding context set on itself and has no own Model set, it will use the first binding context defined in its parent hierarchy.

You have given name to the model (this.setModel(oModel, "myModel")). Specify the model name (oItem.getBindingContext("myModel")) to access the binding context.

The same applies to setBindingContext(oContext, "myModel").

like image 166
Rayon Avatar answered Oct 12 '22 22:10

Rayon


Try:

oItem.getBindingContext("myModel").getPath().substr(1)

You have to pass the name of the model to getBindingContext, if the bound model has been named.

like image 5
SDD64 Avatar answered Oct 13 '22 00:10

SDD64