2017-04-10 1 views
0

Ich lade Daten in mein Modell und habe eine attachRequestCompleted angehängt. Dort möchte ich einen Wert auf ein Feld setzen, aber es gibt this.getView ist keine Funktion. Das Ganze ist in einem Intervall: Mein Code sieht wie folgt aus:SAPUI5 this.getView in attachRequestCompleted

var intervalId = setInterval(this.readRfid.bind(this), 3000); 

readRfid: function() { 

var oRfidModel = new sap.ui.model.xml.XMLModel(); 

    oRfidModel.loadData("http://localhost/xxxxxxx");  
    oRfidModel.attachRequestCompleted(function() { 

     var reader = oRfidModel.oData.children["0"].children["0"].innerHTML;  
     this.getView().byId("objHdr_det_id1").setNumberUnit(reader); 
}); 

Kann ich nicht this.getView in der Funktion verwenden? Wie kann ich es zum Laufen bringen? Danke, Tim

Antwort

1

Die this Instanz zeigt nicht auf den Controller. Sie müssen wahrscheinlich einen Kontext an die Rückruffunktion binden, die Sie an die attachRequestCompleted übergeben haben.

Wie Sie sehen können here können Sie einen OListener zu dieser Methode übergeben.

Ich denke, dass so etwas wie:

var oRfidModel = new sap.ui.model.xml.XMLModel(); 

    oRfidModel.loadData("http://localhost/xxxxxxx");  
    oRfidModel.attachRequestCompleted(function() { 

     var reader = oRfidModel.oData.children["0"].children["0"].innerHTML;  
     this.getView().byId("objHdr_det_id1").setNumberUnit(reader); 

    }, this); 

funktionieren würde. Wenn Ihnen das nicht hilft, können Sie einen Kontext zum Callback bind.

+0

Danke! Das habe ich verpasst, es funktioniert! – Tim