Contexte
Essentiellement, si vous utilisez quelque chose comme {{foo}} dans un modèle handlebars pour faire référence à une propriété du contrôleur/composant, vous devez le mettre à jour en {{this.foo}}.
Informations en amont : Property Fallback Lookup | Ember.js - Deprecations
Pour faire passer Discourse à la mise à niveau Ember 4.x, nous avons introduit un correctif de rétrocompatibilité afin que les thèmes et les plugins n’aient pas besoin de se précipiter pour ce changement. Cependant, il n’est pas possible de maintenir ce correctif indéfiniment, nous devons donc mettre à jour les thèmes et les plugins vers la syntaxe moderne.
Dépréciation
Dans la dernière version de Discourse, l’utilisation de la syntaxe héritée provoquera l’affichage d’un message de dépréciation dans la console. Il ressemblera à ceci :
DÉPRÉCIATION : [PLUGIN discourse-calendar] La propriété `loading` a été utilisée dans le modèle `discourse/plugins/discourse-calendar/discourse/templates/admin-plugins-calendar.hbs` sans utiliser `this`. Ce comportement de repli a été déprécié, toutes les propriétés doivent être recherchées sur `this` lorsqu'elles sont utilisées dans le modèle : {{this.loading}}
Comme pour toute autre dépréciation, nous augmenterons progressivement la visibilité de cet avertissement, jusqu’à ce que nous supprimions éventuellement le correctif de rétrocompatibilité. Nous visons provisoirement le deuxième trimestre 2025 pour la suppression finale, mais nous ajusterons cela en fonction des données du monde réel.
Mise à niveau de votre code
Pour les petits thèmes/plugins, vous pouvez mettre à jour les modèles manuellement pour ajouter this. avant tout nom de propriété.
Pour faciliter la transition pour les thèmes/plugins plus importants, nous avons introduit une nouvelle règle ember-template-lint qui comprend un correcteur automatique.
Ainsi, si vous utilisez la dernière version de notre configuration de linting standard (conformément au squelette de plugin et au squelette de thème), tout le code affecté sera automatiquement mis à jour la prochaine fois que vous exécuterez ember-template-lint --fix.
Si vous avez des questions/préoccupations, n’hésitez pas à nous en faire part ci-dessous !