2016-04-28 2 views
5

Я работаю над splitapp.SAP UI5 - getBindingContext() undefined (splitapp)

При выборе элемента из списка, он говорит

Uncaught TypeError: Cannot read property 'getPath' of undefined

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

Я Привязка JSON Model к списку.

oItem.getBindingContext() не определено. Итак, я считаю, что проблема связана с контекстом привязки.

Код для списка в Master.view.xml как ниже

<content> 
     <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"> 
       </ObjectListItem> 
      </items> 
     </List> 
    </content> 

Я поставил модель в Component.js, как показано ниже:

var oModel= new sap.ui.model.json.JSONModel(); 
    oModel.loadData("Data.json"); 
    this.setModel(oModel,"data"); 

Этот список отображается, но когда я выбираю элемент, который вызывает ошибка.

ответ

5

getBindingContext(sModelName?), Получить контекст привязки этого объекта для названия модели. Если у объекта нет установленного контекста привязки и не имеет собственного набора моделей, он будет использовать первый контекст связывания, определенный в его родительской иерархии.

Вы указали название модели (this.setModel(oModel,"data");). Укажите название модели (oItem.getBindingContext('data')) при доступе к Binding Контекст

+0

Он работал нормально. :) – FEBzX

+0

@FEBzX, рад помочь вам :) – Rayon

3

Try:

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

Вы должны передать имя модели к «getBindingContext()», если граница модель была названа ,

Смежные вопросы