模板帮助程序中出现异常:错误:Can'不要在没有DOM的组件上使用$
Exception in template helper: Error: Can't use $ on component with no DOM
我正在Meteor中做一个笔记应用程序。我有一个实时预览,当你输入时会更新,显示提交后的笔记的样子,它还渲染了标记。现在我想在预览注释中添加语法高亮显示。
如果你不完全清楚我想做什么,请在这里查看演示。试着创建一个新的音符。在预览中,我想添加语法高亮显示。
由于每次键入内容时,实时预览都需要重新运行语法高亮显示,因此我需要一种方法来挂接预览注释内容的重读器,以重新运行highlightjs代码。
对于以前版本的Meteor,只需使用Template.render = function () {...}
就可以实现这一点。但这已经不可能了,因为当模板第一次渲染时,API更改为仅运行渲染一次。
我现在想尝试以下内容。在markdown渲染函数旁边添加一个模板辅助对象,这样它将在每次更新内容时运行。在这个rerender
函数中,我将查找当前模板实例,并运行高亮显示代码。
模板
<template name="previewNote">
{{#if content}}
<div class="note preview">
<h2 class="previewTitle">Preview</h2>
<hr>
<div class="middleNote">
<h1>{{title}}</h1>
<!-- THIS LINE -->
<p class='note-content'>{{#markdown}}{{content}}{{rerender}}{{/markdown}}</p>
<!-- THIS LINE -->
</div>
<hr>
<ul class="tags bottomNote">
{{#each tags}}
<li class="tag"><a>{{this}}</a></li>
{{/each}}
</ul>
</div>
{{/if}}
</template>
JS
Template.previewNote.rerender = function () {
// get the current template instance, and highlight all code blocks
var codes = UI._templateInstance().findAll("pre>code");
for (var i = 0; i < codes.length; i++) {
hljs.highlightBlock(codes[i]);
}
};
这看起来很扎实,直到我尝试了一下,得到了一个例外。
Exception in template helper: Error: Can't use $ on component with no DOM
。
我在寻找:为什么会发生这种错误,以及我如何修复它。或者另一种方法,以实现我想要的结果。
像这样使用Tracker.autorun
:
Template.previewNote.rendered = function(){
this.autorun(function(){
// every time Template.currentData is changed then this function reruns
Template.currentData();
var codes = self.findAll("pre>code");
for (var i = 0; i < codes.length; i++) {
hljs.highlightBlock(codes[i]);
}
})
}
相关文章:
- 从子级获取React dom组件
- React - 从 DOM 元素获取组件以进行调试
- React:将组件附加到DOM
- 没有任何 DOM 元素的 Aura 组件
- 如何获得聚合物Web组件的组合DOM
- 如何获取当前Vue组件的DOM元素
- Web组件,添加Shadow DOM事件
- 组件如何从 DOM 中移除/删除自身
- 如果我知道 DOM 元素的 ID,如何获取组件
- 反应/回流数据流:DOM 中一个组件两次
- 将dom节点传递到Knockout组件中(当使用RequireJS时)
- 从react中的父dom节点中删除子组件
- 将DOM元素项从react js组件中移出
- 模板帮助程序中出现异常:错误:Can'不要在没有DOM的组件上使用$
- 从DOM元素中获取Ember组件
- React是否自动修剪已从DOM中删除其挂载点的组件
- 在React+Redux.js应用程序中,在Provider组件之外操作DOM元素的正确方法是什么
- Highcharts提示?如何向hiccharts DOM组件添加类或id ?
- 让React组件像DOM组件那样触发更改事件
- 创建DOM组件列表的测试函数