Я пытаюсь отрендерить компонент Glimmer как лист дерева виджетов, как я делал это несколько раз ранее, но получаю странную ошибку, которую раньше не встречал:
TypeError: this.parentMountWidgetComponent is undefined
ошибка возникает на этой строке:
Похоже, что this.widget?._findView() || this._emberView
возвращает undefined.
(this.widget существует)
Мой код на очень ранней стадии находится здесь:
Разрешено ли использовать RenderGlimmer в этом контексте?
Это зависит от того, что у предка есть это свойство?
this._findAncestorWithProperty("_emberView")
который возвращает undefined.
Или от того, что у самого элемента есть _emberView (но у него его нет).
Я предполагаю, что у предка это должно было быть установлено здесь:
OK, немного больше информации.
Когда Poll (опрос) рендерится (как дерево виджетов), эта строка выполняется, но когда вы возвращаетесь к голосованию, она не выполняется, поэтому по какой-то причине у предка нет свойства “_emberView” (или оно не находится).
Причиной этой проблемы может быть то, что виджет никогда не перерисовывается:
rerenderWidget() {
не вызывается снова, несмотря на добавление нового дерева виджетов… поэтому это свойство никогда не устанавливается.
… следовательно, решением может быть планирование перерисовки при нажатии кнопки «Голосовать» …
Плагин опросов немного необычен тем, что виджет монтируется внутри обработанного HTML-кода поста, а не напрямую внутри шаблона Ember через компонент <MountWidget. Поэтому, вероятно, нам нужно добавить здесь дополнительную логику… посмотрю
Я думаю, что если мы объединим это, ваш код должен заработать @merefield
Это не особенно красиво, но, я думаю, это допустимо, так как это довольно редкая ситуация, и мы надеемся полностью убрать всю эту магию с виджетами и RenderGlimmer в ближайшем будущем