主干车把变量返回0(零)

Backbone handlebars variables return 0 (zero)

本文关键字:返回 变量      更新时间:2023-09-26

我在用一些数据渲染车把模板时遇到了一些麻烦。变量占位符被替换为"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"}

(我在这里也硬编码了,console.log在this.tpl(this.data)给出这个值之前一行)

车把模板是这样的:

<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);

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

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

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