2016-04-28 17 views
5

Sto lavorando a un splitapp.UI5 SAP - getBindingContext() undefined (splitapp)

Selezionando una voce dall'elenco, si dice

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

sto associazione di un JSON Model alla lista.

oItem.getBindingContext() non è definito. Quindi credo che il problema sia legato al contesto vincolante.

Il codice per la lista in Master.view.xml è come sotto

<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> 

Ho impostato il modello Component.js come di seguito:

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

La lista è visualizzato ma quando seleziono l'elemento si genera l'errore.

risposta

5

getBindingContext(sModelName?), Ottenere il contesto di associazione di questo oggetto per il nome del modello specificato. Se l'oggetto non ha un contesto vincolante impostato su se stesso e non ha un proprio modello impostato, utilizzerà il primo contesto di associazione definito nella sua gerarchia padre.

Hai dato nome al modello (this.setModel(oModel,"data");). Specificare il nome del modello (oItem.getBindingContext('data')) durante l'accesso Contesto Binding

+0

Ha funzionato bene. :) – FEBzX

+0

@FEBzX, felice di aiutarti :) – Rayon

3

Prova:

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

Devi passare il nome del modello di 'getBindingContext()', se il modello legato è stato nominato .