Was steuert die Ausführungsreihenfolge für die JS-Komponenten von Themes?

Der Name hat keinen Einfluss auf die Ausführungsreihenfolge. @merefield die Zeile, auf die Sie verwiesen haben, beeinflusst, wie sie in der Admin-Oberfläche angezeigt werden, wird aber nicht für die eigentliche Ausführung verwendet.

Dies ist die relevante Zeile für die Ausführungsreihenfolge:

Sie werden also in aufsteigender Reihenfolge der „id“ in der Datenbank ausgeführt.

Die einzige Garantie, die über Discourse-Instanzen hinweg portierbar ist, ist, dass Theme-Code immer vor Theme Component-Code ausgeführt wird.

Wie @Johani oben erwähnt hat, ist die beste Vorgehensweise, wenn Sie Code ausführen müssen, nachdem eine andere Komponente geladen wurde, wahrscheinlich die Verwendung eines Ember-Initialisierers, der die Reihenfolge unterstützt. Leider ist dies in diesem Fall nicht sofort möglich, da DiscoTOC anscheinend keine Ember-Initialisierer verwendet. Ein Update von DiscoTOC zur Verwendung von JavaScript mit mehreren Dateien (und damit Ember-Initialisierern) wäre sicherlich ein pr-welcome.

3 „Gefällt mir“