8

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.

Boghyon Hoffmann
  • 17,103
  • 12
  • 72
  • 170
FEBzX
  • 367
  • 2
  • 5
  • 15
  • Does this answer your question? [How to get the binding context of clicked item?](https://stackoverflow.com/questions/62556515/how-to-get-the-binding-context-of-clicked-item) – Boghyon Hoffmann Feb 25 '22 at 14:43

2 Answers2

12

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

Boghyon Hoffmann
  • 17,103
  • 12
  • 72
  • 170
Rayon
  • 36,219
  • 4
  • 49
  • 76
5

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.

Boghyon Hoffmann
  • 17,103
  • 12
  • 72
  • 170
SDD64
  • 706
  • 13
  • 28