Contesto
Essenzialmente, se stai usando qualcosa come {{foo}} in un template handlebars per fare riferimento a una proprietà sul controller/component, allora deve essere aggiornato a {{this.foo}}.
Informazioni upstream: Property Fallback Lookup | Ember.js - Deprecations
Per far passare Discourse attraverso l’aggiornamento a Ember 4.x, abbiamo introdotto uno shim di retrocompatibilità in modo che temi e plugin non dovessero affrettare questa modifica. Tuttavia, non è fattibile mantenere questo shim indefinitamente, quindi dobbiamo aggiornare temi e plugin alla sintassi moderna.
Deprecazione
Nell’ultima versione di Discourse, l’uso della sintassi legacy causerà la stampa di un messaggio di deprecazione nella console. Sarà simile a questo:
DEPRECATION: [PLUGIN discourse-calendar] Il percorso della proprietà `loading` è stato utilizzato nel template `discourse/plugins/discourse-calendar/discourse/templates/admin-plugins-calendar.hbs` senza usare `this`. Questo comportamento di fallback è stato deprecato, tutte le proprietà devono essere cercate su `this` quando utilizzate nel template: {{this.loading}}
Come per qualsiasi altra deprecazione, aumenteremo lentamente la visibilità di questo avviso, fino a quando non rimuoveremo definitivamente lo shim di retrocompatibilità. Stiamo provvisoriamente puntando al Q2 2025 per la rimozione finale, ma adegueremo ciò in base ai dati del mondo reale.
Aggiornamento del codice
Per temi/plugin di piccole dimensioni, puoi aggiornare manualmente i template per aggiungere this. prima di qualsiasi nome di proprietà.
Per rendere la transizione più semplice per temi/plugin di grandi dimensioni, abbiamo introdotto una nuova regola ember-template-lint che include un auto-fixer.
Quindi, se utilizzi l’ultima versione della nostra configurazione di linting standard (come da plugin skeleton e theme skeleton), tutto il codice interessato verrà aggiornato automaticamente la prossima volta che eseguirai ember-template-lint --fix.
Se hai domande/dubbi, faccelo sapere qui sotto!