如果条件不起作用,车把

时间:2018-01-31 12:52:53

标签: javascript jquery handlebars.js

无法在Handlbars模板中使用if条件。 下面是我的jquery Handlebars函数,

$.each(data.response, function (i, item) {
   var source = $("#my-orders").html();
   var template = Handlebars.compile(source);
   html += template(item);
   //alert(html);
});
if(html){
   $("#myorderss").html(html);
}

当我使用if条件时,它无效。

{{#if id=='1'}}
{{/if}}

如何在手柄模板中使用if条件?

1 个答案:

答案 0 :(得分:1)

这是对if条件的误解。 在这里查看#if文档:http://handlebarsjs.com/builtin_helpers.html

  

您可以使用if帮助器有条件地渲染块。如果它是   参数返回false,undefined,null,"",0或[],Handlebars会   不渲染块。

你需要做的是用来测试病情的把手助手。

这是"测试"的一个例子。我用来做比较的助手:

Handlebars.registerHelper('test', function(lvalue, operator, rvalue, options) {
    var doDisplay = false;
    var items = (""+rvalue).split("|");
    var arrayLength = items.length;
    for (var i = 0; (i < arrayLength); i++) {
        if (operator == "eq") {
            if (lvalue == items[i]) {
                doDisplay = true;
            }
        } else if (operator == "ne") {
            if (lvalue != items[i]) {
                doDisplay = true;
            }
        } else if (operator == "gt") {
            if (parseFloat(lvalue) > parseFloat(items[i])) {
                doDisplay = true;
            }
        } else if (operator == "lt") {
            if (parseFloat(lvalue) < parseFloat(items[i])) {
                doDisplay = true;
            }
        }else if (operator == "le") {
            if (parseFloat(lvalue) <= parseFloat(items[i])) {
                doDisplay = true;
            }
        }else if (operator == "ge") {
            if (parseFloat(lvalue) >= parseFloat(items[i])) {
                doDisplay = true;
            }
        }
    }
    if (doDisplay) {
        return options.fn(this);
    } else {
        return "";
    }
}); 

以下是您如何调用它,例如,如果您根据测试测试并显示结果:

{{#test id 'eq' '1'}}
{{id}} equals 1
{{/test}}
{{#test id 'ne' '1'}}
{{id}} do not equals 1
{{/test}}
{{#test id 'ge' '1'}}
{{id}} greater or equals 1
{{/test}}
{{#test id 'ne' '1'}}
{{id}} lower or equals 1
{{/test}}