Se no, sembra che questo metodo funzioni solo quando si collega a una classe di connettore (cioè con un plugin outlet). Ci sono passaggi speciali che devo compiere per aggiungere un nuovo plugin outlet a un template?
Penso di aver fatto funzionare questa cosa. Obiettivo: caricare determinati argomenti in un punto specifico di un nuovo modello (probabilmente funziona anche per l’aggiunta a modelli esistenti, ma non l’ho testato):
Inserisci il tuo outlet plugin inventato nel tuo modello (il mio outlet plugin inventato si chiama “great-topics”, ad esempio):
{{plugin-outlet name="great-topics"}}
Aggiungi il codice Handlebars (ovvero il tuo componente) in un connettore:
const ajax = require('discourse/lib/ajax').ajax;
const Topic = require('discourse/models/topic').default;
setupComponent(args, component) {
ajax("/tag/featured.json").then(function (result) {
let featuredTopics = [];
// Crea un array vuoto, vi spingeremo gli argomenti
var featuredUsers = result.users;
// Ottieni gli utenti rilevanti
result.topic_list.topics.slice(0, 4).forEach(function (topic) {
// Stiamo estraendo gli argomenti partendo da 0 fino a 4
// Questo significa che ne mostreremo 3 in totale. Aumenta 4 per mostrarne di più.
topic.posters.forEach(function (poster) {
poster.user = $.grep(featuredUsers, function (e) { return e.id == poster.user_id; })[0];
});
// Associa gli utenti al nostro argomento
featuredTopics.push(Topic.create(topic));
// Aggiungi i nostri argomenti all'array featuredTopics
});
}) // fine result.topic.topic_list...
component.set('featuredTopics', featuredTopics); // qui gli argomenti vengono aggiunti al componente
component.set("loadingTopics", false); //il mio codice sopra non ha un caricatore. ma questo è presente se vuoi un caricatore. Devi aggiungerlo al file hbs per quello. Vedi il post collegato su Meta sopra
}); // fine ajax
}// fine setup component
Per me funziona, almeno per caricare argomenti con il tag “featured” nell’outlet plugin del mio nuovo modello.
Per vedere questo in funzione, sarà necessario riavviare il server.