Hintergrund
Im Wesentlichen muss alles, was Sie wie {{foo}} in einer Handlebars-Vorlage verwenden, um auf eine Eigenschaft des Controllers/der Komponente zu verweisen, zu {{this.foo}} aktualisiert werden.
Upstream-Informationen: Property Fallback Lookup | Ember.js - Deprecations
Um Discourse durch das Ember 4.x-Upgrade zu bringen, haben wir einen Abwärtskompatibilitäts-Shim eingeführt, damit Themes und Plugins diese Änderung nicht überstürzen mussten. Es ist jedoch nicht praktikabel, diesen Shim auf unbestimmte Zeit beizubehalten, daher müssen wir Themes und Plugins auf die moderne Syntax aktualisieren.
Veraltung
In der neuesten Version von Discourse führt die Verwendung der Legacy-Syntax zu einer Verwarnungsmeldung, die in der Konsole ausgegeben wird. Sie sieht ungefähr so aus:
DEPRECATION: [PLUGIN discourse-calendar] Die `loading`-Eigenschaft wurde im Template `discourse/plugins/discourse-calendar/discourse/templates/admin-plugins-calendar.hbs` ohne Verwendung von `this` verwendet. Dieses Fallback-Verhalten wurde veraltet, alle Eigenschaften müssen bei der Verwendung im Template auf `this` nachgeschlagen werden: {{this.loading}}
Wie bei jeder anderen Veraltung werden wir die Sichtbarkeit dieser Warnung langsam erhöhen, bis wir schließlich den Abwärtskompatibilitäts-Shim entfernen. Wir peilen vorläufig das zweite Quartal 2025 für die endgültige Entfernung an, werden dies aber basierend auf realen Daten anpassen.
Aktualisieren Ihres Codes
Für kleine Themes/Plugins können Sie die Vorlagen manuell aktualisieren, um this. vor jedem Eigenschaftsnamen hinzuzufügen.
Um den Übergang für größere Themes/Plugins zu erleichtern, haben wir eine neue ember-template-lint-Regel eingeführt, die einen automatischen Fixer enthält.
Wenn Sie also die neueste Version unserer Standard-Linting-Konfiguration verwenden (gemäß dem Plugin-Skeleton und dem Theme-Skeleton), werden alle betroffenen Codes beim nächsten Ausführen von ember-template-lint --fix automatisch aktualisiert.
Wenn Sie Fragen/Bedenken haben, lassen Sie es uns bitte unten wissen!