Javascript 如果车把状况不工作

Javascript 如果车把状况不工作,javascript,jquery,handlebars.js,Javascript,Jquery,Handlebars.js,无法在手杆模板中使用if条件。 下面是我的jquery手柄功能 $.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
条件。 下面是我的jquery手柄功能

$.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条件的误解。 请查看此处的#if文档:

可以使用if辅助对象有条件地渲染块。如果是 参数返回false、undefined、null、“、0或[],将显示手柄 不渲染块

你需要做的是一个车把助手来测试你的状况

下面是我用来进行比较的“测试”助手的一个示例:

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 "";
    }
}); 

尝试{{#if id}},因为这会检查“truthy”值,否则您可能需要包含一个“equals”辅助函数以进行更复杂的匹配checks@SajjanSarkar我必须键入4 if条件并比较id,我需要为它执行iTunes
Handlebar helpers
:Handlebar提供子表达式支持,它允许您在一个小胡子内调用多个助手,并将内部助手调用的结果作为参数传递给外部助手。@KunJ我已经检查过了,但如何在我的把手中使用?试试这个“如果您知道的足够多,可以详细说明吗?”?阅读Handlebars文档,我认为这意味着如果if块的“参数”实际上是一个Javascript值false、null、0等,那么它将无法通过测试。但只需将该值指定给参数就不起作用。(例如,
'arg':传入的false仍然是真的。)然后,我可能会注意到它说如果参数“返回false”。。。因此,参数必须是一个函数,它返回要测试的值。这与我在项目中看到的其他用法以及Helpers概念相匹配。但这也不起作用。if到底在做什么来测试这个值呢?没关系,sorta——回答了我自己的问题。找到了他们的GitHub#if似乎接受Javascript基本数据类型或函数的值。直接为if块提供一个基本数据类型(比如false、null等)是有效的——有一次我修复了自己的代码,解决了一个更深层次的问题,这个问题使得handlebar的计算结果总是“真实的”。
{{#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}}