在 connector 组件中使用 {{didInsert}} 时出错:“无法在没有 'new' 的情况下调用类构造函数 DidInsertModifier”

大家好:

我正在开发一个自定义主题组件,并尝试通过插件出口 kanban-card-bottom 使用一个连接器组件。在该连接器组件内部,我想在渲染后使用 {{didInsert}} 修饰符运行 DOM 逻辑。

但是,只要我在模板中添加 {{didInsert this.modifyElement}},我就会在浏览器控制台中收到以下错误:

Uncaught (in promise) TypeError: Class constructor DidInsertModifier cannot be invoked without 'new'
    at FunctionHelperManager.getValue (index.js:214:86)

我的组件设置:

// javascripts/discourse/connectors/kanban-card-bottom/replace-last-post-by.gjs
import Component from "@glimmer/component";
import { action } from "@ember/object";
import didInsert from "@ember/render-modifiers/modifiers/did-insert";

export default class ReplaceLastPostBy extends Component {
  @action
  modifyElement(element) {
    console.log("Element ====> ", element);
  }

  <template>
    {{didInsert this.modifyElement}}
  </template>
}

目标:
我只是想从这个连接器组件中在渲染后定位一个 DOM 元素(例如,在视觉上替换用户名)。

如果您有任何见解,我将不胜感激!

错误截图

谢谢!

您的示例中似乎缺少一些代码?我期望看到一个 <template> / </template>,并且希望修饰符附加到像下面这样的元素

<template>
  <div {{didInsert this.modifyElement}}>
    ...
  </div>
</template>
1 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.