NEWS
getState liefert anders Ergebnis als bei Objekt
-
Wenn man den Javascript-Adapter nicht auf alle States subscribed, dürfte das so auch nicht auftreten, weil der Adapter dann keine eigenen Objekte auf die States vorhält. Man muss dann aber mit den async Funktionen von set/get State arbeiten.
-
Wenn man den Javascript-Adapter nicht auf alle States subscribed, dürfte das so auch nicht auftreten, weil der Adapter dann keine eigenen Objekte auf die States vorhält. Man muss dann aber mit den async Funktionen von set/get State arbeiten.
Aber der Adapter sollte so ja nicht reagieren.
Er sollte nur de-referenzierte Objekte herausgeben.
Höre ich zum ersten Mal das das im Adapter so ist. Das müsste doch vorher schon jemand aufgefallen sein -
Aber der Adapter sollte so ja nicht reagieren.
Er sollte nur de-referenzierte Objekte herausgeben.
Höre ich zum ersten Mal das das im Adapter so ist. Das müsste doch vorher schon jemand aufgefallen sein@OliverIO [sagte]: Höre ich zum ersten Mal das das im Adapter so ist.
Das war schon immer so. Die Variable liste_test zeigt in den Puffer der Javascript-Instanz.
@GeraldK66 sagte:
Im Objektbaum sehe ich nach wie vor die ursprüngliche Liste.Das ist die Liste im js-controller (Admin-Puffer). Wenn man die Liste mit setState("0_userdata.0.Strom.Strom_Tageswerte", liste_test, true) schreibt, stimmen beide Listen wieder überein.
-
@OliverIO [sagte]: Höre ich zum ersten Mal das das im Adapter so ist.
Das war schon immer so. Die Variable liste_test zeigt in den Puffer der Javascript-Instanz.
@GeraldK66 sagte:
Im Objektbaum sehe ich nach wie vor die ursprüngliche Liste.Das ist die Liste im js-controller (Admin-Puffer). Wenn man die Liste mit setState("0_userdata.0.Strom.Strom_Tageswerte", liste_test, true) schreibt, stimmen beide Listen wieder überein.
Das verstehe ich jetzt nicht
liste_test = getState("0_userdata.0.Strom.Strom_Tageswerte").val liste_test[2]=100; console.info(getState("0_userdata.0.Strom.Strom_Tageswerte").val); console.info(liste_test);Ich hab mir eine Liste erstellt und diese hier "0_userdata.0.Strom.Strom_Tageswerte" abgespeichert.
Nun wollte ich diese Liste mit getState auslesen und in eine lokale liste abspeichern, dann gewisse Elemente ändern und dann mit setState bei einen anderen Objekt abspeicher.
Es kommt mir aber komisch vor, dass getState("0_userdata.0.Strom.Strom_Tageswerte").val, das selbe Ergebnis liefert als liste_test.
Ich hab ja nur was bei liste_test geändert und nicht bei der ursprünglichen Liste. -
Das verstehe ich jetzt nicht
liste_test = getState("0_userdata.0.Strom.Strom_Tageswerte").val liste_test[2]=100; console.info(getState("0_userdata.0.Strom.Strom_Tageswerte").val); console.info(liste_test);Ich hab mir eine Liste erstellt und diese hier "0_userdata.0.Strom.Strom_Tageswerte" abgespeichert.
Nun wollte ich diese Liste mit getState auslesen und in eine lokale liste abspeichern, dann gewisse Elemente ändern und dann mit setState bei einen anderen Objekt abspeicher.
Es kommt mir aber komisch vor, dass getState("0_userdata.0.Strom.Strom_Tageswerte").val, das selbe Ergebnis liefert als liste_test.
Ich hab ja nur was bei liste_test geändert und nicht bei der ursprünglichen Liste.@GeraldK66 [sagte: nur was bei liste_test geändert und nicht bei der ursprünglichen Liste.
Du hast die Änderung im Puffer der Javascript-Instanz gemacht.
Will man eine Liste nur lokal bearbeiten, muss man sie erst in eine lokale Liste kopieren. -
@GeraldK66 [sagte: nur was bei liste_test geändert und nicht bei der ursprünglichen Liste.
Du hast die Änderung im Puffer der Javascript-Instanz gemacht.
Will man eine Liste nur lokal bearbeiten, muss man sie erst in eine lokale Liste kopieren. -
@paul53
Ich dachte mit diesem Befehl mach ich dasliste_test = getState("0_userdata.0.Strom.Strom_Tageswerte").val
ist liste_test nicht die lokale liste
-
@GeraldK66
Konnte es nicht ausprobieren, aber theoretisch soliste_test = …{getState("0_userdata.0.Strom.Strom_Tageswerte")}.val -
@GeraldK66
Konnte es nicht ausprobieren, aber theoretisch soliste_test = …{getState("0_userdata.0.Strom.Strom_Tageswerte")}.valliste_test = …{getState("0_userdata.0.Strom.Strom_Tageswerte")}.valHabs auch nicht getestet aber
const a = getState("0_userdata.0.Strom.Strom_Tageswerte").val const b = {...a}; // müsste zusammengefasst doch so aussehen oder? const a = {...getState("0_userdata.0.Strom.Strom_Tageswerte").val}; -
@GeraldK66 [sagte]: wie erstelle ich dann eine lokale Liste?
const liste_test = getState("0_userdata.0.Strom.Strom_Tageswerte").val.slice(); -
@GeraldK66 [sagte]: wie erstelle ich dann eine lokale Liste?
const liste_test = getState("0_userdata.0.Strom.Strom_Tageswerte").val.slice(); -
liste_test = …{getState("0_userdata.0.Strom.Strom_Tageswerte")}.valHabs auch nicht getestet aber
const a = getState("0_userdata.0.Strom.Strom_Tageswerte").val const b = {...a}; // müsste zusammengefasst doch so aussehen oder? const a = {...getState("0_userdata.0.Strom.Strom_Tageswerte").val};@ticaki
Deins ist richtiger
Aber letze geschweifte Klammer vor das .valconst a = {...getState("0_userdata.0.Strom.Strom_Tageswerte")}.val;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring
Slice funktioniert das nicht nur bei arrays?
Da kommt doch ein Objekt zurückDennoch bin ich der Meinung das das der Adapter machen muss.
Sonst ist das Ergebnis unvorsehbar,
Wie dieser thread auch beweistDa müsste man auf GitHub einen issue aufmachen
-
@oliverio
Das müsste beides funktionieren, in deinem Beispiel würde es aber keinen Fehler geben wenn in.valmist drin steht. Das getState liefert doch ein array, oder? Ich persönlich speichere nur stringifizierte Json und Arrays in der StatesDB. (und states haben immer die role json, type string) -
@ticaki
Deins ist richtiger
Aber letze geschweifte Klammer vor das .valconst a = {...getState("0_userdata.0.Strom.Strom_Tageswerte")}.val;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring
Slice funktioniert das nicht nur bei arrays?
Da kommt doch ein Objekt zurückDennoch bin ich der Meinung das das der Adapter machen muss.
Sonst ist das Ergebnis unvorsehbar,
Wie dieser thread auch beweistDa müsste man auf GitHub einen issue aufmachen
@OliverIO [sagte]: Meinung das das der Adapter machen muss.
Als Javascript-Programmierer sollte man wissen, dass Arrays und Objekte referenziert werden.
getState(id) liefert das Zustands-Objekt (state) eines Datenpunktes. Das Array steht in getState(id).val, wenn der Datenpunkt vom Typ "array" ist.
-
@OliverIO [sagte]: Meinung das das der Adapter machen muss.
Als Javascript-Programmierer sollte man wissen, dass Arrays und Objekte referenziert werden.
getState(id) liefert das Zustands-Objekt (state) eines Datenpunktes. Das Array steht in getState(id).val, wenn der Datenpunkt vom Typ "array" ist.
@OliverIO [sagte]: Meinung das das der Adapter machen muss.
Als Javascript-Programmierer sollte man wissen, dass Arrays und Objekte referenziert werden.
Das weiß ich schon,
Aber mehrfaches lesen eines datenpunkts sollte konsistent auch den echten Inhalt des datenpunkts liefern, auch wenn man in die variable das zwischenzeitlich was reinschreibt.
Die meisten Nutzer wissen ja nix vom caching, welches sich ja auch noch an und ausschalten lässt.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden