【发布时间】:2014-02-23 10:57:24
【问题描述】:
我试图使用流星的车把助手来包含一个模板。就像,我的index.html 看起来像
<body>
{{> body}}
</body>
<template name="body">
{{include "myTemplate" attr=value}}
</template>
为此,我创建了一个车把助手,如下所示
Handlebars.registerHelper('include', function(templateName, options) {
return Template[templateName]({name: 'stackoverflow'});
});
myTemplate.html 看起来像
<template name="myTemplate">
Hello {{name}}
</template>
我在任何地方都没有{{> myTemplate}}。我的计划是动态注入/渲染它。
所以当我运行项目时,{{include ...}} 被替换为一些像下面这样的乱码 html。
<$label:RjH4gQSmtStAKKaBv><$data:yBKwgoiiHFTKfMec2>
<$landmark:uRZQ3PShZEQwKngFG><$events:WW5fKkc6G5FYKzNrb>
<$watch:GQg4oHk9CyhMw97v4><$isolate:5gXzmhnr9ZCWtWjTB>Hello stackoverflow</$isolate:5gXzmhnr9ZCWtWjTB>
</$watch:GQg4oHk9CyhMw97v4></$events:WW5fKkc6G5FYKzNrb>
</$landmark:uRZQ3PShZEQwKngFG></$data:yBKwgoiiHFTKfMec2>
</$label:RjH4gQSmtStAKKaBv>
看起来与火花有关。当我在开发控制台中运行Template.myTemplate({name: 'stackoverflow'}) 时,我得到了正确的字符串'Hello stackoverflow'。我很困惑为什么在帮助器中使用时会给出这些乱码数据?
【问题讨论】:
-
首先,您应该避免使用名为
body的模板。在新的模板引擎(您现在可以与meteor --release template-engine-preview-10.1一起使用)中,主体是UI.body访问的自己的特殊模板。其次,你为什么要制作一个包含模板的助手?这就是{{> templateName}}已经在做的事情。我觉得通过iron-router 路由会更好地完成您尝试做的任何事情。
标签: javascript meteor handlebars.js meteor-helper