如果条件不起作用,车把

if Handlbars模板中的条件无法使用。 下面是我的jquery Handlebarsfunction,下面是

 $.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条件的误解。 请查看#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}}