Objekt in Array verschachteln, welches man wiederum in ein Objekt packt

Also für das Binding meiner Tabelle, muss ich folgendes JSON Objekt:
Code:
{"id":"txn_18Ptu52eZvKYlo2C9c8ejhap","amount":999,"availableOn":1467331200,"created":1466773164,"currency":"usd"}
in so etwas umwandeln:


Code:
  {"data":[{"id":"txn_18Ptu52eZvKYlo2C9c8ejhap","amount":999,"availableOn":1467331200,"created":1466773164,"currency":"usd"}]}
weil ich später meine Spalten mit "/data" binde

Folgendes habe ich versucht:


Code:
  success : function(data1, textStatus, jqXHR) {
                      var resp = [data1];
                      var response = {data: resp[0]};
                      var oJSonModel = new sap.ui.model.json.JSONModel(response);
                      this.oView.setModel(oJSonModel);
data1 ist genau das Objekt was ich ganz oben erhalte, ich speicher dieses dann in einem Array mit dem Namen resp, dann versuche ich dieses Array in einem neuen Objekt zu speichern, aber irgendwas geht da anscheinend schief, weil ich dann folgenden Error bekomme

sap-ui-core.js:71 Uncaught TypeError: Cannot read property 'setModel' of undefined


dementsprechend wird auch nichts in meiner Tabelle angezeigt weil ich vermute, dass ich hier nicht wirklich mein Array gespeichert hab sonst würde er mir ja nun das Array komplett anzeigen.....

EDIT: hab was verändert

Viele Grüße, Casio
 
Zuletzt bearbeitet:
sap-ui-core.js:71 Uncaught TypeError: Cannot read property 'setModel' of undefined
Das Problem ist nicht die Verschachtelung deines Objekts, sondern diese Zeile:

Code:
this.oView.setModel(oJSonModel);
this.oView ist offensichtlich undefined. Ich vermute stark, dass du diesen Code wo anders rauskopiert hast, weshalb die this-Referenz nicht mehr stimmt (this innerhalb einer Top-Level Funktion in JS ist eigentlich nie was sinnvolles); demnach ist auch this.oView nicht definiert.Wie du das berichtigen kannst, kann ich dir leider nicht sagen, sap-ui kenne ich nicht.
 
Das Problem ist nicht die Verschachtelung deines Objekts, sondern diese Zeile:


this.oView ist offensichtlich undefined. Ich vermute stark, dass du diesen Code wo anders rauskopiert hast, weshalb die this-Referenz nicht mehr stimmt (this innerhalb einer Top-Level Funktion in JS ist eigentlich nie was sinnvolles); demnach ist auch this.oView nicht definiert.Wie du das berichtigen kannst, kann ich dir leider nicht sagen, sap-ui kenne ich nicht.

richtig ich bin eigentlich in JS kein meister muss jetzt halt wegen der Aufgabe aber damit arbeiten und habe von einem Projekt einiger Kollegen viel kopiert, aber danke schon mal für den Tipp ich schlag mich mal damit rum und poste dann meine Lösung
 
oView war nirgendswo definiert ich hätte dort das schreiben müssen:

Code:
that.getView.setModel(oJSonModel);
und in der Funktion direkt am Anfang folgendes deklarieren:

Code:
var that = this;

Problem das er es nicht in der Tabelle anzeigt bleibt aber immer noch....
 
Ist dir klar, dass es zwischen this und that für deine Belange keinen Unterschied gibt?
Beide sind nicht die Variable, die dir hier hilft. Diese ominöse oView kann das Diagramm aktualisieren. Und du brauchst eine Referenz darauf; this ist immer Kontextabhängig. Und in einer function gibts keinen Sinnvollen Kontext: ergo ist this.oView nicht definiert. Und ein var that = this kann diese Referenz auch nicht aus dem Hut zaubern.

Was du tun kannst:
Schau in die Dokumentation von sap-ui (ist es vllt dashier?). Dort steht, wie und aus welchem Kontext heraus du an die Referenz auf das oView kommst.
 
Lösung des Problems:

Code:
  success : function(data1, textStatus, jqXHR) {
                      var resp = [data1];
                      var response = {data: resp};
                      var oJSonModel = new sap.ui.model.json.JSONModel(response);
                      this.oView.setModel(oJSonModel);
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben