2017-01-31 6 views
0

Ich benutze SAPUI5, ich habe eine MasterPage und eine DetailPage, in der MasterPage habe ich eine Liste und wenn ich de Artikel in der Liste auswählen, werden die Informationen in der DetailPage angezeigt.Wie bekomme ich die Daten einer Ansicht?

In der DetailPage habe ich eine PositiveAction, Wenn ich die PositiveAction drücke, muss ich die Daten der DetailPage bekommen, aber ich weiß nicht wie ich das machen soll.

Mein Code des Item-Press

onPoSelect : function(oEvent) { 
     var oListItem = oEvent.getParameter('listItem'); 
     var oRouter = sap.ui.core.UIComponent.getRouterFor(this); 
     oRouter.navTo("DetailPanel", { 
      invoicePath: oListItem.getBindingContext("solped").getPath().substr(1) 
     }); 

    }, 

Mein Code in der DetailPanel

onInit: function(){ 
     var oRouter = sap.ui.core.UIComponent.getRouterFor(this); 
     oRouter.getRoute("DetailPanel").attachPatternMatched(this._onObjectMatched, this); 
    }, 
    _onObjectMatched: function (oEvent) { 
     this.getView().bindElement({ 
      path: "/" + oEvent.getParameter("arguments").invoicePath, 
      model: "solped" 
     }); 
    }, 

Die Zeile "oEvent.getParameter (" Argumente "). InvoicePath"

gibt das zurück.

Rechnungen (CustomerName = 'Alfreds Futterkiste', Rabatt = 0f, OrderID = 10702, ProductID = 3, ProductName = 'Anis Sirup', Menge = 6, Verkäufer = 'Margaret Peacock', ShipperName = 'Speedy Express', UnitPrice = 10.0000M)

Ich habe die Informationen, aber es ist eine Zeichenfolge, wie kann ich diese Zeichenfolge in einem Objekt konvertieren? Oder: Wie kann ich sonst auf die Informationen in der Ansicht zugreifen?

Das Bild der Ansicht

enter image description here

Antwort

0

Ich nehme an, Sie bereits die Daten des Einzelnen in Ihrer Detailansicht sehen. Sie haben die Daten mit der bindElement-Funktion an die Ansicht gebunden und sie im Code, den Sie nach der Funktion "getBindingContext" suchen, zurückerhalten.

erstellen in Ihrem Details Controller folgende Funktion:

// this must be connected to Button -> <Button press="onPositivePress"> 
onPositivePress: function(oEvent) { 

var oBindingContext = this.getView().getBindingContext("solped"); 

// this is the path you can use to call odata service 
var sPath = oBindingContext.getPath(); 

// this is data you are looking for 
var oReqData = oBindingContext.getObject(); 

} 
+0

Danke Amigo, es funktioniert, Vielen Dank für Ihre Antwort. –

0

für String-Umwandlung unter Beispiel zum Objekt sehen.

var a = "wie ru";

var b = [a];

Sie erhalten Objekt von a in b.

0

Sie können alle Eigenschaften als Objekt abrufen, indem Sie den Bindungspfad als Argument an die getProperty-Funktion des zugrunde liegenden Datenmodells übergeben.

var oModel = this.getView().getModel("solped"); 
var oProps = oModel.getProperty(oListItem.getBindingContext("solped").getPath()); 

Sie können dann auf diese Eigenschaften als

oProps.CustomerName; 
oProps.OrderID; 
... 
Verwandte Themen