backbone.js 车把手内的车把手模板

falq053o  于 2022-11-10  发布在  其他
关注(0)|答案(3)|浏览(135)

我正在尝试使用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编译器解释。

ffvjumwh

ffvjumwh1#

请尝试:

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

kkbh8khc2#

我已经通过使用一个名为“braces”的帮助器修复了它:

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

并使用:

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

有没有办法不使用助手就能做到这一点?

tct7dpnv

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。

相关问题