把手里面的把手模板

时间:2013-10-15 16:58:35

标签: node.js backbone.js handlebars.js

我尝试使用NodeJS和Backbone渲染Handlebars模板。

到目前为止,我在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模板中,它就不起作用,因为NodeJS Handlebars编译器正在解释{{text}}。

3 个答案:

答案 0 :(得分:5)

尝试:

<script type="text/x-handlebars-template" id="my-template">
   \{{text}}
</script>

答案 1 :(得分:0)

我已经使用名为“braces”的帮助程序修复了它:

...
exports.braces = function(obj1){
   return '{{'+param+'}}';
}
...

使用:

<script type="text/x-handlebars-template" id="my-template">
   {{{braces 'text'}}}
</script>

有没有办法在不使用助手的情况下这样做?

答案 2 :(得分:0)

您可以在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。