Handlebar.java:比较#if帮助器中的相等性

时间:2016-06-20 06:10:59

标签: handlebars.js handlebarshelper handlebars.java

如何比较Handlebars.java中的相等和其他逻辑条件。 例如:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.15.0/jquery.validate.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-steps/1.1.0/jquery.steps.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="/css/result-light.css">
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-steps/1.1.0/jquery.steps.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.15.0/jquery.validate.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.6/css/bootstrap.min.css">
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.6/js/bootstrap.min.js"></script>



<body>

<div id="pasosTemplate">
                <h3>Información Básica</h3>
                <section>
                    <form class="form-horizontal" id="basico">
                        <div class="form-group">
                            <label class="col-lg-2">Nombre Template</label>
                            <div class="col-lg-6">
                                <input type="text" class="form-control" placeholder="Nombre Template" id="nombre-temp" name="nombre-temp" >
                            </div>
                        </div>
                        <div class="form-group">
                            <label class="col-lg-2">Descripción Template</label>
                            <div class="col-lg-6">
                                <input type="text" class="form-control" placeholder="Descripción Template" id="descripcion-temp" name="descripcion-temp">
                            </div>
                        </div>
                        <div class="form-group">
                            <label class="col-lg-2">Objetivo de Optimización</label>
                            <div class="col-lg-6">
                                <select class="form-control" id="objetivo-o" name="objetivo-o">
                                    <option value=" ">Selecciona un objetivo...</option>
                   
                                </select>
                            </div>
                        </div>
                        <div class="form-group">
                            <label class="col-lg-2">Establecer cantidad Mínima y Máxima de clientes</label>
                            <div class="col-lg-2">
                                <input type="number" class="form-control" placeholder="Mínimo" id="min-cli" name="min-cli">
                            </div>
                            <div class="col-lg-2">
                                <input type="number" class="form-control" placeholder="Máximo" id="max-cli" name="max-cli">
                            </div>
                        </div>
                        <div class="form-group">
                            <label class="col-lg-2">Celdas de Comunicación</label>
                            <div class="col-lg-2">
                                <input type="number" placeholder="Cantidad celdas" class="form-control" id="cantidad-celdas" name="cantidad-celdas">
                            </div>
                        </div>
                    </form>
                </section>
                <h3>Segmentación</h3>
                <section>
                    <form class="form-horizontal" id="segmentacion" action="#">
                  
                        <div class="col-lg-12" id="segmentaciones">

                        </div>
                        <div class="form-group">
                            <label class="col-lg-2">Estimación de Clientes alcanzados</label>
                            <div class="col-lg-4">
                                <input type="text" readonly class="form-control" id="clientes-alcanzados">
                            </div>
                        </div>
                    </form>
                </section>
            </div>
            </body>

欢迎使用或不使用{{#if template_version == "v2" }} //do something {{ else }} //do something {{/if}} 的解决方案。

1 个答案:

答案 0 :(得分:2)

你需要编写一个帮助来进行==检查,因为Handlebars不会提供开箱即用的==构造。

你可以这样写一个简单的帮手:

    Handlebars.registerHelper('if_eq', function(a, b, opts) {

        if(a == b) // Or === depending on your needs
            return opts.fn(this);
        else
            return opts.inverse(this);
    });

您可以为帮助者指定任何名称。我给了if_eq

现在,在您的模板中:

{{#if_eq template_version "v2" }}
  //do something 
{{ else }}
  //do something
{{/if_eq}}

如果你想要所有操作员的助手,你可以这样做:

    Handlebars.registerHelper({
        eq: function (v1, v2) {    
            return v1 === v2;
        },
        ne: function (v1, v2) {
            return v1 !== v2;
        },
        lt: function (v1, v2) {
            return v1 < v2;
        },
        gt: function (v1, v2) {
            return v1 > v2;
        },
        lte: function (v1, v2) {
            return v1 <= v2;
        },
        gte: function (v1, v2) {
            return v1 >= v2;
        },
        and: function (v1, v2) {
            return v1 && v2;
        },
        or: function (v1, v2, opts) {
            return v1||v2;
        }
    });