在Handlebars中使用条件时保留无逻辑模板

时间:2014-06-21 03:18:12

标签: handlebars.js template-engine

我使用Handlebars库为我的网站制作模板。但是,因为模板应该是无逻辑的,所以基本的布尔逻辑(例如,基于小于检查打印红色或绿色div)是很困难的,而不需要求助于黑客攻击。如何在不向模板添加逻辑的情况下解决这些问题?

1 个答案:

答案 0 :(得分:2)

无逻辑并不代表您根本不能使用逻辑,只是意味着您无法在模板中使用逻辑。 您应该在将所有数据传递给模板之前准备好所有数据。

例如,考虑MV *应用程序上的这个常见用例(如Backbone驱动的应用程序):

型号:

{
  name: 'Roger',
  age: 50
}

查看:

...
getTemplateData: function (model) {
  var data = model;

  if (model.age >= 50) {
    data.isTooOld= true;
  }

  return data;
}
...
render: function () {
  var data = this.getTemplateData(model) || {};
  this.el.innerHTML = this.template(data);
}
...

模板:

<p>
  OK, {{name}},
  {{#if isTooOld}}
    you're too old for this shit!
  {{else}}
    let's do this!
  {{/if}}
</p>