Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.3k views
in Technique[技术] by (71.8m points)

sapui5 - getBindingContext() returns undefined

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.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share
...