Sto tentando di renderizzare un Glimmer Component come foglia di un widget tree, come ho fatto diverse volte in precedenza, ma sto riscontrando questo strano errore che non avevo mai visto prima:
TypeError: this.parentMountWidgetComponent is undefined
che si verifica su questa riga:
Sembra che this.widget?._findView() || this._emberView
sia undefined.
(this.widget esiste)
Il mio codice in fase iniziale è qui:
È lecito utilizzare RenderGlimmer in questo contesto?
Questo si basa su un antenato che ha questa proprietà?
this._findAncestorWithProperty("_emberView")
che restituisce undefined.
O che esso stesso abbia un _emberView (cosa che non ha)
Suppongo che l’antenato avrebbe dovuto averlo impostato qui:
Ok, qualche informazione in più.
Quando il sondaggio viene renderizzato (come un albero di widget), questa riga viene eseguita, ma quando si torna indietro per votare, non lo è, quindi per qualche motivo non c’è un antenato con un “_emberView” (o non viene trovato)
La fonte di questo problema potrebbe essere che il widget non viene mai renderizzato di nuovo:
rerenderWidget() {
Non viene più attivato nonostante l’aggiunta di un nuovo albero di widget… quindi questa proprietà non viene mai impostata.
… quindi la soluzione a questo potrebbe essere quella di pianificare un re-render quando viene premuto il pulsante Vota…
Il plugin poll è un po’ insolito in quanto il widget è montato all’interno dell’HTML cotto di un post, piuttosto che direttamente all’interno di un template Ember tramite il componente <MountWidget>. Quindi probabilmente dobbiamo aggiungere una logica extra qui… ci darò un’occhiata :occhi:
Penso che se uniamo questo, dovrebbe far funzionare il tuo codice @merefield
Non è particolarmente bello, ma penso che vada bene dato che questa è una situazione piuttosto rara e speriamo di eliminare completamente tutta questa roba di widget/RenderGlimmer in un futuro non troppo lontano