我在使用一些数据渲染手柄模板时遇到了一些麻烦。变量占位符替换为" 0"而不是变量值。我已将JS对象记录到已编译的车把模板中,这一切似乎都很好。模板本身呈现得很好,它只是不起作用的变量。
tpl: function(){
var template_id = "#tpl-" + this.partial,
partials_elem = $('<div>' + partials + '</div>');
return Handlebars.compile($(template_id, partials_elem).html());
},
和
this.$el.html(this.tpl(this.data)).appendTo(this.holder);
,其中
this.data = {first_name: "test"}
(我已经在那里硬编码了,在this.tpl(this.data)之前的console.log一行也给了我这个值)
把手模板如下所示:
<div id="tpl-test">
{{first_name}}
</div>
我使用的是RequireJS,Backbone和Handlebars。
我希望有人可以帮助我!
谢谢, 瑞克
编辑: 通过改变解决
this.$el.html(this.tpl(this.data)).appendTo(this.holder);
为:
var tpl = (this.tpl())(this.data || {});
this.$el.html(tpl).appendTo(this.holder);
答案 0 :(得分:1)
我认为问题是你调用函数tpl来渲染你的对象,你应该调用函数的返回,而不是函数本身,我为此做了一个jsfiddle,将tpl函数的结果保存在变量中然后像
一样使用它this.$el.html(this.compiledTemplate(this.data));
请检查这个jsfiddle http://jsfiddle.net/mfarouk/ttnL8oo5/1/