Backbone handlebars变量返回0(零)

时间:2014-08-17 11:35:50

标签: javascript templates backbone.js requirejs handlebars.js

我在使用一些数据渲染手柄模板时遇到了一些麻烦。变量占位符替换为" 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);

1 个答案:

答案 0 :(得分:1)

我认为问题是你调用函数tpl来渲染你的对象,你应该调用函数的返回,而不是函数本身,我为此做了一个jsfiddle,将tpl函数的结果保存在变量中然后像

一样使用它
this.$el.html(this.compiledTemplate(this.data));

请检查这个jsfiddle      http://jsfiddle.net/mfarouk/ttnL8oo5/1/