和使用Handlebar的声明

时间:2012-07-31 10:36:21

标签: javascript handlebars.js

我想知道是否可以在handlebar中使用可能的AND语句来制作类似的东西: 如果不是,最好的方法是什么,得到相同的结果。


这是javascript上下文:

{
  title: "My first post!",
  author: {
    firstName: "Charles",
    lastName: "Jolley"
  }
}

这是HTML上下文:

<div class="entry">
  {{#if firstName && lastName}}
  <h1>{{firstName}} {{lastName}}</h1>
  {{/if}}
</div>

1 个答案:

答案 0 :(得分:2)

不,本机{{#if}}不理解该语法。但是,您可以轻松地add your own helper获得类似的内容,如果您不介意使用arguments,您甚至可以使用未知数量的参数来帮助您。

唯一棘手的部分是注意到帮助程序的块参数总是最后的。

像这样简单的事情可以解决问题:

Handlebars.registerHelper('if_all_true', function() {
    var args  = Array.prototype.slice.call(arguments);
    var block = args.pop();
    for(var i = 0; i < args.length; ++i)
        if(!args[i])
            return block.inverse(this);
    return block(this);
});

演示:http://jsfiddle.net/ambiguous/jMLcZ/