提交另一个答案 b/c 我想保留我以前的答案,仅作记录。我认为这种方法会更好。
在您的 html 中,您将定义两个部分。第一个是您要放置模板代码的位置。它将进入一个普通 div 标签内的评论。第二个是放置模板以供 Knockout 使用的位置。它看起来像这样:
<template name="koTemplate">
<div id="myTemplate">
<span>Here is my template <a href="#">with children</a></span>
</div>
<script type="text/html" id="test"></script>
</template>
然后在您的客户端 JS 代码中,您将添加一个回调以在模板渲染时运行
Template.koTemplate.rendered = function () {
// Get the first node, then get the content inside of it
var templateHtml = this.firstNode.innerHTML;
// Remove the element so it doesn't get rendered
this.firstNode.parentNode.removeChild(this.firstNode);
// another option is to surround the contents inside the template w/comments, but that loses syntax highlighting
// Get the target node for placing the template in
var templateNode = this.lastNode;
// place the content from the original node to the target node
templateNode.innerHTML = templateHtml;
};
这基本上将获取模板的内容,删除模板,然后将其放在脚本标签中。结果将如下所示:
<script type="text/html" id="test">
<span>Here is my template <a href="#">with children</a></span>
</script>