NEWS
Javascript: subscribe from
-
Ein kleiner Wunsch, der aber hoffentlich vielen das Programmieren erleichtert:
Um auf Ereignisse zu reagieren, werte ich häufig selbst angelegte Objekte aus (quasi variablen). Dieses geschieht per subscribe/on.
Wenn man per Javascript den Wert eines Objektes verändert, reagiert subscribe/on zunächst nicht. Man muss dann zusätzlich from:system.adapter.javascript.0 angeben. Den Sinn verstehe ich nicht. Schön wäre es, wenn man hier auch "any" angeben könnte. Zur Zeit habe ich nämlich das Problem, dass ich das subscribe wegen des Verhaltens mehrfach schreiben muss. Vielleicht wäre es auch sinnvoll, from:'any' als default zu setzen. Wer das ändern möchte, kann das ja mit from:… machen.
Gruß Gerhard
-
Eigentlich "from" ist nicht erforderlich und wird normallerweise ignoriert.
Was für ein Szenario hast du?
-
Ein Beispiels für ein Szenario:
In einem View habe ich eine Drop-Downbox (jqui Select ValueList) für verschiedene Stimmungen. Diese habe ich mit einem Objekt verknüpft, welches ich mit "createState("Szene",0);" angelegt habe. Wenn sich das Objekt (Web-Oberfläche oder per Javaskript) ändert soll folgendes Skript ausgeführt werden:
subscribe({id: "javascript.0.Szene", val: true}, function (obj) { setNextScene(scene); });
Das bekomme ich nur hin, indem ich zusätzlich folgendes Skript habe:
subscribe({id: "javascript.0.Szene", change:'any', from : 'system.adapter.web.0' }, function (obj) { setScene(scene); });
Anscheinend kommt es darauf an, wer den Inhalt von Objekten ändert. Deswegen meine Anregung.
-
Wenn man per Javascript den Wert eines Objektes verändert, reagiert subscribe/on zunächst nicht. `
@steinwedel:In einem View habe ich eine Drop-Downbox (jqui Select ValueList) für verschiedene Stimmungen. Diese habe ich mit einem Objekt verknüpft, welches ich mit "createState("Szene",0);" angelegt habe. `
Das ist eine Veränderung in VIS, nicht in Javascript. Habe auch einige solche Konstrukte. Ich nehme auch "from" dafür. Wenn du aber in Javascript mit setState agierst, brauchst du das nicht.Andererseits würde zB das State val Widget in VIS gar nicht mehr funktionieren, wenn nicht auch Javascript auf die Änderung nach Tastendruck reagierte. Ich bin jetzt auch verwirrt. :roll:
Pix
-
subscribe({id: "javascript.0.Szene", val: true}, function (obj) { setNextScene(scene); }); ```` `
Hier wird ja nur auf eine Veränderung reagiert, wenn "Szene" den Wert true hat. Dies wird aber in deinen benutzen Widget eventuell nicht passieren.
@steinwedel:subscribe({id: "javascript.0.Szene", change:'any', from : 'system.adapter.web.0' }, function (obj) { setScene(scene); }); ```` `
Hier wird auf jede Veränderung reagiert!!!
-
Gut gesehen. Ist aber auch so gewollt. In meiner Liste, die ausgewählt wird, ist der Eintrag 0 = Licht aus. Per Webseite ist es schön, das Licht ausschalten zu können. Wenn man den Taster zum Wechseln der Szene drückt, so sollte das Licht nicht ausgeschaltet werden. Dazu gibt es den eigentlichen Lichtschalter. Hier macht also diese merkwürdige Funktionalität sogar Sinn.