Inline-Ereignisskripte
Dateien verwenden standardmäßig JavaScript. Optional steht vor den Definitionen
scriptLanguage: "js" oder scriptLanguage: "lua". Eine automatische Spracherkennung
findet nicht statt. Die Angabe gilt für alle Komponenten und Screens der Datei.
Dialog Counter {
property int count
Button {
text: "Getippt: " + str(count)
onTap: { state.count += 1; }
}
}
scriptLanguage: "lua"
Dialog Counter {
property int count
Button {
text: str(count)
onTap: { state.count = state.count + 1 }
}
}
Normale Signalverweise wie onTap: next bleiben gültig. Blöcke sind für native
Widget-Ereignisse und Signale eigener Komponenten verfügbar. event.value ist der
Ereigniswert, zusätzlich event.text bei Text und event.checked bei booleschen
Werten. Bei mehreren Parametern eines Komponenten-Signals enthält event.args
die Werte (JS 0-basiert, Lua 1-basiert). emit("signal", argumente...) löst ein
deklariertes Signal aus.
state liest die Wurzel-Properties; veränderbar sind skalare Argumente und
Zustände (int, real, bool, string, color). Konstanten sowie Records und
Listen sind schreibgeschützt, Bild-/Knotenobjekte werden nicht bereitgestellt.
Farbwerte sind ARGB-Zahlen oder beim Schreiben #rrggbb/#aarrggbb-Strings.
Unbekannte Properties, falsche Typen und ungültige Zustandsnamen werden abgewiesen.
Handler haben 8 MiB Speicher und 20 ms Ausführungsbudget. Sie laufen im UI-Thread;
langsame Arbeit bleibt in C++-Tasks. Änderungen und Signale werden erst nach einem
erfolgreichen Aufruf übernommen. Lokale Skriptvariablen gehören dem Handler;
UI-Zustand gehört in state. Das Löschen des Knotens deaktiviert seinen Handler.
Fehler enthalten die AURA-Datei und Zeile, werden geloggt und an
Context::onScriptError gemeldet; die Vorschau zeigt sie als Diagnosen.
AURA_WITH_SCRIPT=OFF baut weiterhin die UI, lehnt aber Inline-Handler klar ab.
docs/aura.md · Markdown herunterladen