我正在尝试使用NodeJS和Backbone渲染一个手柄模板。
到目前为止,我所做的工作在HTML文件中完美地工作:
app.MyView = Backbone.View.extend({
...
render: function() {
var template = Handlebars.compile( $("#my-template").html());
this.$el.html( template(this.model.toJSON()) );
return this;
}
...
});
在HTML中查看:
<script type="text/x-handlebars-template" id="my-template">
{{text}}
</script>
但是,如果我将此视图放置在Handlebars模板中,它将无法工作,因为{{text}}正在由NodeJS Handlebars编译器解释。
3条答案
按热度按时间ffvjumwh1#
请尝试:
kkbh8khc2#
我已经通过使用一个名为“braces”的帮助器修复了它:
并使用:
有没有办法不使用助手就能做到这一点?
tct7dpnv3#
您可以在
app.js
中定义帮助程序,如app.engine( '.hbs', hbs({ extname: '.hbs', defaultLayout: 'base', ... helpers: { default: hbsHelper(), // this is the default helpers if you have like handlerbars-helpers raw() { return 'your templates' } } }) );
个在你的情况下,它是
raw() { return '<script type="text/x-handlebars-template" id="my-template"> {{text}} </script>' }
在代码中将'替换为'。然后在你的前端文件(比如.hbs)中,只要包含
{{{raw}}}
,你就可以在不渲染的情况下使用你的模板,这样你就可以在不做任何修改的情况下编写普通的模板,因为{{{raw}}}
只会把它渲染成html。