NEWS
[Frage] zu Laufzeit erstellen State verarbeiten
-
Moin,
gibt es eine Möglichkeit einen State der zur Laufzeit erstellt wurde im Skript abzufragen ?
der 'Pfad' ist Teilweise vorher bekannt und würde in etwa javascript.0.Spotify.Devices.xxxx.Play lauten. xxxx ist nicht vorhersehbar !
on({id:'javascript.0.Spotify.xxxx.Play',val:true}, function (obj){ //bla bla });
würde ja nicht gehen…
-
Moin,
gibt es eine Möglichkeit einen State der zur Laufzeit erstellt wurde im Skript abzufragen ?
der 'Pfad' ist Teilweise vorher bekannt und würde in etwa javascript.0.Spotify.Devices.xxxx.Play lauten. xxxx ist nicht vorhersehbar !
on({id:'javascript.0.Spotify.xxxx.Play',val:true}, function (obj){ //bla bla });
würde ja nicht gehen… `
Weis nicht ob ich dich richtig verstanden habe, aber…$('javascript.0.Spotify.*').on(function (obj){ //bla bla });
geht vielleicht
-
Moin,
gibt es eine Möglichkeit einen State der zur Laufzeit erstellt wurde im Skript abzufragen ?
der 'Pfad' ist Teilweise vorher bekannt und würde in etwa javascript.0.Spotify.Devices.xxxx.Play lauten. xxxx ist nicht vorhersehbar !
on({id:'javascript.0.Spotify.xxxx.Play',val:true}, function (obj){ //bla bla });
würde ja nicht gehen… `
Ich gehe mal davon aus, das xxxx irgendwann bekannt ist. Dann könntest Du, wenn der Wert von xxxx sich ändert, den State in einer Variable zusammenbauen.
Dann fragst Du einfach die Variable ab:
on({id: variable ,val:true}, function (obj){ //bla bla });
Hoffe das ist verständlich
P.S.: eine Alternative wäre dann noch RegExp (siehe Beschreibung vom Javascript-Adapter).
mfg dna909
-
xxxx ist nicht vorhersehbar ! `
Wenn du zumindest ungefährt weißt, wie das aussehen wird, gehts mit RegExp:
1. Fall: xxx sind Ziffern (0-9):
on({id: /javascript\.0\.spotify\.\d+\.play/i, val:true}, [...])
2. Fall: xxx sind Buchstaben/Ziffern/Unterstrich:
on({id: /javascript\.0\.spotify\.\w+\.play/i, val:true}, [...])
Andernfalls sag nochmal Bescheid, dann passen wir das Muster an.
-
die beiden Varianten funktionieren
$('state[state.id=*.play]').on(function (obj) { console.log('GEDRÜCKT 3') }); $('state[id=.play]').on(function (obj) { console.log('GEDRÜCKT 4') });
allerdings nur wenn Role nicht als Button definiert ist, allerdings würde ich gerne bei Button bleiben, gibts da ne Möglichkeit ?
-
Meine Variante funktioniert nicht?
-
nein, leider nicht ..
-
on({id: /\.play$/, val:true},function (obj){ console.log('GEDRÜCKT 5') });
funktioniert !
-
Und diese Variante ?
on({id: /^javascript\.0\.Spotify\..+\.play$/}, function (obj){ log('gedrückt: ' + obj.id); });
-
on({id: /\.play$/, val:true},function (obj){ console.log('GEDRÜCKT 5') });
funktioniert ! `
Hat aber den Nachteil, dass ALLE States gefunden werden, die auf ".play" enden, nicht nur die in javascript.0.Spotify. Probier mal Pauls Variante