如何在HandleBars模板中执行IF逻辑?

时间:2013-09-23 17:14:03

标签: javascript handlebars.js

在下划线模板中,如果像这样的逻辑,我可以这样做:

<% if(type === 'video') { %>
    // Something
<% } %>

在把手中我可以做类似的事吗?试过这个,但它不起作用:

{{#if type === 'video'}}
    // Something
{{/if}}

尝试使用助手,但仍然没有运气:

Handlebars.registerHelper('isVideo', function(type) {
    if(type === 'video') {
        return true;
    }
    return false;
});

{{#if isVideo type}}
    // Something
{{/if}}

2 个答案:

答案 0 :(得分:2)

有一种方法

 Handlebars.registerHelper('ifCond', function(v1, v2, options) {
  if(v1 === v2) {
    return options.fn(this);
  }
  return options.inverse(this);
});

然后你可以像这样在

中调用模板中的帮助器
 {{#ifCond v1 v2}}
    {{v1}} is equal to {{v2}}
{{else}}
    {{v1}} is not equal to {{v2}}
{{/ifCond}}

答案 1 :(得分:0)

From the Handlebars docs

  

您可以使用if帮助器有条件地渲染块。如果其参数返回false,undefined,null,“”或[](“falsy”值),Handlebars将不会渲染块。

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

与空({})上下文一起使用时,将导致:

<div class="entry">
</div>

您可以在上下文中加入videoType等内容并检查。