javascript - Handlebars (如果情况不工作)

标签 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}}

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

最佳答案

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

You can use the if helper to conditionally render a block. If its argument returns false, undefined, null, "", 0, or [], Handlebars will not render the block.

您需要做的是一个 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}}

关于javascript - Handlebars (如果情况不工作),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48542688/

相关文章:

javascript - Jquery - 错误 : Syntax error, 无法识别的表达式:#

json - 无法使用 Handlebars JS 和 Ember JS 循环遍历嵌套的 JSON 数组(大写属性)

javascript - 如何在 Handlebars 模板中添加 console.log() JavaScript 逻辑?

javascript - 如何将变量从node.js传递到html

javascript - 正则表达式:无法进行负向预测

javascript - 如果flot中只有一个数据点,如何显示日期标签?

javascript - 如何根据父 ID 替换字符串?

javascript - 在 WordPress 中用 Bootstrap 导航栏替换导航

javascript - 将负数分开然后求和

javascript - 当我重新加载禁用时,使用 angularjs 禁用 ng-repeat 按钮不起作用?