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.

qml
Dialog Counter {
    property int count
    Button {
        text: "Getippt: " + str(count)
        onTap: { state.count += 1; }
    }
}
qml
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.

Dokumentationsquelle: docs/aura.md · Markdown herunterladen

Suche nach Themen, Widgets oder APIs.