Potrei star perdendo qualcosa di ovvio, quindi mi scuso in anticipo se è così.
Il mio plugin ha un’impostazione personalizzata per ogni categoria, che viene utilizzata per mostrare/nascondere un interruttore nel composer. L’interruttore è configurato in un componente glimmer, che viene chiamato da un inizializzatore per renderizzare nell’outlet composer-fields del plugin.
Il mio obiettivo è far sì che il composer mostri/nasconda l’interruttore ogni volta che la categoria viene cambiata all’interno del composer, a seconda del valore dell’impostazione personalizzata legata a quella categoria.
È possibile aggiungere un osservatore su outletArgs di un outlet di plugin? Il modello del composer è impostato in outletArgs, quindi il mio pensiero era di impostare l’osservatore su categoryId attraverso quello. Poi eseguirei una funzione per controllare il valore dell’impostazione personalizzata nella categoria. Ma sto avendo problemi con la configurazione dell’osservatore. Potrebbe essere che lo sto configurando in modo errato, sono piuttosto nuovo a EmberJS.
Oppure c’è un modo diverso per raggiungere questo obiettivo?
Come contesto, attualmente sto eseguendo Discourse v3.4.7.
Ho provato questa soluzione ma sfortunatamente sembra che la versione su cui sto costruendo abbia un elenco più vecchio di transformer inizializzati, a cui manca composer-editor-reply-placeholder.
Per un po’ più di contesto, sto rifattorizzando le funzionalità dei plugin per utilizzare i componenti Glimmer dopo la deprecazione dell’API registerConnectorClass. Il codice seguente è ciò che è stato impostato originariamente.
export default {
initialize(container) {
withPluginApi("1.6.0", api => {
api.registerConnectorClass("composer-fields", "handlebars-template-name", {
setupComponent(attrs, component) {
const model = attrs.model;
const controller = api.container.lookup("controller:composer");
if (controller) {
controller.addObserver("model.categoryId", this, function() {
// logic to set values for showToggle & isRestricted
let props = {
showField: showToggle && isRestricted,
}
component.setProperties(Object.assign(props));
})
}
}
}
C’è un altro modo per ottenere la stessa funzionalità da un componente Glimmer? In particolare, osservare le modifiche su model e/o categoryId.