如何使用条件语句显示/隐藏Handlebars中的html元素

时间:2015-05-20 14:43:31

标签: javascript jquery templates handlebars.js

我的把手标签中有以下内容:

{{#editmode mode}}

    <div class="form-group login-input">
       <i class="fa fa-key overlay"></i>
       <input type="password" class="form-control text-input" name="password" placeholder="Password" value="{{password}}">
    </div>

    <div class="form-group login-input">
       <i class="fa fa-key overlay"></i>
       <input type="password" class="form-control text-input" name="password_confirmation" value="{{password}}">
     </div>

{{/editmode}}

我将以下注册为我的帮助函数:

Handlebars.registerHelper('editmode', function(mode){           
    return mode == 'edit' ? true : false;
});

传递给车把模板的对象如下所示:

{
   firstname: 'Test',
   lastname: 'Test lastname',
   mode: 'new
}

所以基本上,每当'mode'变量为'new'时,我想显示密码字段,否则隐藏它们,但现在它们总是被隐藏。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

我明白了。这就是诀窍:

Handlebars.registerHelper('editmode', function(mode, options){                      
     return mode == 'edit' ? '' : options.fn();
});

答案 1 :(得分:0)

您可以使用if声明。

<div class="form-group login-input">
   <i class="fa fa-key overlay"></i>
   <input type="password" class="form-control text-input" name="password" placeholder="Password" value="{{password}}">
</div>

{{#if mode}}
<div class="form-group login-input">
   <i class="fa fa-key overlay"></i>
   <input type="password" class="form-control text-input" name="password_confirmation" value="{{password}}">
 </div>
{{/if}}