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

Casio

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

Tobse

Top Contributor
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.
 

Casio

Mitglied
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
 

Casio

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

Tobse

Top Contributor
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.
 

Casio

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

Ähnliche Java Themen

Neue Themen


Oben