Meteor:markdown 中包含的模板不调用 onRendered 钩子

Meteor: templates included in markdown do not call onRendered hook

我在一个模板中使用markdown,在markdown中包含另一个模板,如下:

<template name="hello">
  {{#markdown}}

  {{> subtemplate}}

  {{/markdown}}

</template>

<template name="subtemplate">
  <p>Something to show</p>
</template>

然后在javascript,我有:

Template.subtemplate.onRendered(
  function() {
    console.log("Visited");
    return;
  }
)

在页面上,我确实看到了 "Something to show"。但是,没有调用 onRendered 挂钩,因为我在控制台中没有看到 "Visited" 。

如果我将子模板移到 markdown 之外:

<template name="hello">
  {{#markdown}}

  {{/markdown}}

  {{> subtemplate}}

</template>

我确实在控制台中看到了 "Visited"。

那么,无论如何要在 markdown 中触发 onRendered 钩子?

遗憾的是,目前无法将模板放入 markdown 帮助程序并使其以交互方式工作。它不仅适用于事件处理程序 onRendered 钩子。

发生这种情况的原因是 markdown 有效地将其所有内容传输到文本,然后将其传递给 markdown 解析器,最后渲染生成的文本。结果是您的 views 的结构在此过程中丢失。

事实上,这个助手并不是为了处理其中的大量 html 内容而设计的。相反,您应该只将单个文本块传递给 markdown 助手,并尽量避免将模板放入其中,如果它们包含除了渲染内容之外的一些额外逻辑,例如事件处理程序。