因为这个问题似乎没有答案:通过车把部分传递变量 https://stackoverflow.com/questions/11523331/passing-variables-through-handlebars-partial然而,我目前正在研究一些解决方法来完成这项工作。因此,我们的想法是注册一个辅助函数,它用可能的值呈现特定的模板。一点代码可以更好地理解。
这就是我调用我的助手的方式:
<div>
{{myHelper}}
</div>
这个助手是用这个小代码注册的:
hbs.registerHelper(name, function (args) {
args = args || {};
var template = hbs.compile(fs.readFileSync(__dirname + '/' + file, 'utf8'));
return template(args);
});
我将此片段放入循环中以立即注册不同的助手。这意味着给出了“名称”和“文件”。
好吧,现在我可以做这样的事情:
// 'values' could be something like this:
var values = { headline: 'HEADLINE' }
<div>
{{myHelper values}}
</div>
在助手中,我现在可以测试是否给出了特定值:
// myHelper template
<div>
{{#if headline}}
<h1>{{headline}}</h1>
{{/if}}
<p>Lorem ipsum</p>
</div>
这个小解决方法对我有用,但有一个问题。如上所述注册助手,返回一个纯 HTML 转义字符串。因此,调用助手不会输出渲染的 HTML 片段。它将 HTML 作为转义字符串输出。
你们中有人知道如何让我的代码片段返回 HTML 作为 HTML 吗?
/Pascal
我只想指出,使用三重括号无需运行任何其他方法来转换为 HTML。例如,访问模板数据时只需使用三重花括号{{{templateData}}}
,它允许您获取原始 HTML。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)