【问题标题】:How to do IF logic in HandleBars templates?如何在 HandleBars 模板中做 IF 逻辑?
【发布时间】:2013-09-28 16:38:51
【问题描述】:

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

<% 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}}

【问题讨论】:

    标签: javascript handlebars.js


    【解决方案1】:

    From the Handlebars docs:

    您可以使用 if 助手有条件地渲染一个块。如果它的参数返回 false、undefined、null、"" 或 [](一个“假”值),Handlebars 将不会渲染该块。

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

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

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

    您可以在上下文中包含 videoType 之类的内容并检查。

    【讨论】:

      【解决方案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}}
      

      【讨论】:

      • 谢谢查理。你知道你的东西的人。你已经两次直接或间接地回答了我的一个问题。
      猜你喜欢
      • 2013-07-04
      • 2013-06-19
      • 2018-12-30
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多