NEWS
Frage zu on Funktion
-
Hallo,
ich habe eine Verständnisfrage zur on Funktion
Diese Funktion wird immmer dann ausgeführt, wenn sich der Zustand vom Datenpunkt ändert. Würde sie dann in meinem Beispiel zweimal durchlaufen, wenn "Datenpunkt" Bool true irgendwo in der Vis gesetzt würde und durch das Script wieder gelöscht. Also hier im Beispiel wäre das Script selbst für die zweite Änderung verantwortlich und "Datenpunkt" würde zwei mal auf false gesetzt? Verstehe ich das richtig ?
on("Datenpunkt", function(dp) { setState(Datenpunkt, false); });
Jetzt das gleiche, nur mit Bedingung "gt" . New value must be greater than old value (state.val > oldState.val) steht in der Doku über on. Hier würde setState nur ausgefürht, wenn "Datenpunkt" von false auf true wechselt. Ist das richtig ?
on({id: "Datenpunkt", change: "gt"}, function (obj) { setState(Datenpunkt, false); });
Und hier würde setState nur ausgefürht, wenn "Datenpunkt" von true auf false wechselt. Ist das richtig ?
on({id: "Datenpunkt", change: "lt"}, function (obj) { setState(Datenpunkt, false); });
Hoffe ich konnte mir klar genug ausdrücken.
Beste Grüße.
Tobo
-
Würde sie dann in meinem Beispiel zweimal durchlaufen, wenn "Datenpunkt" Bool true irgendwo in der Vis gesetzt würde und durch das Script wieder gelöscht `
Ja.
@TOBO:Also hier im Beispiel wäre das Script selbst für die zweite Änderung verantwortlich und "Datenpunkt" würde zwei mal auf false gesetzt? Verstehe ich das richtig ? `
Nein. Erst auf true, dann gleich wieder auf false. Es wird ja nur bei Wertänderung ausgelöst. Teste selbst:on("Datenpunkt", function(dp) { setState(Datenpunkt, false); log('ne ' + dp.state.val); });
Jetzt das gleiche, nur mit Bedingung "gt". Hier würde setState nur ausgefürht, wenn "Datenpunkt" von false auf true wechselt. Ist das richtig ? `
Ja. -
Nein. Erst auf true, dann gleich wieder auf false. Es wird ja nur bei Wertänderung ausgelöst. Teste selbst:
on("Datenpunkt", function(dp) { setState(Datenpunkt, false); log('ne ' + dp.state.val); }); ```` `
Doch, weil ja die Funktion einmal auf Wertänderung reagiert und dann selbst den Wert von true auf false ändert und sich quasi somit seblst noch mal aufruft.
Habe nun alle drei Möglichkeiten getestet und es ist genauso, wie ich es vermutet habe. Ich hatte nämlich bei einigen Funktionen ganz komische Ergebnisse, weil sie
eben immer auf Wertänderung reagieren und dann zwei mal durchlaufen wurden. Nun verstehe ich das auch und kann das ändern.
Gruß.
Tobo