基本 'if' 语句在 handlebars JS 中不起作用

Basic 'if' statements do not work in handlebars JS

我正在使用 express-handlebars 并且有以下最小模板:

<!DOCTYPE html>
<html>

    <body>

        {{#if page === 'help'}}YAAAY{{/if}}

    </body>
</html>

解析失败:

Error: C:\Users\mike\myapp\views\error.hbs: Parse error on line 6:
...ody>     {{#if page === 'help'}}YAAAY{{/i
---------------------^

我知道 handlebars 不期待 ===,但这不是 if 的重点吗?

如何在把手中使用 if 语句?

车把的 if-helper only accepts a boolean as an argument。您有两个选择:

使用现有的处理程序

page === 'help' 的结果作为模板中的变量传递并执行如下操作:

{{#if isPageHelp}}
  <h1> Help! </h1>
{{/if}}

制作你自己的处理器

你可以implement the === operator with your own handler. Thanks @sp00m.

试试这个助手

 const Handlebars = require('handlebars');
    Handlebars.registerHelper('ifCond', function (v1,v2,options) {
    if (v1 == v2)
        return options.fn(this);
    else
        return options.inverse(this);
    });

Handlebars.registerHelper('exCond', function (v1,v2,options) {
    if (v1 != v2)
        return options.fn(this);
    else
        return options.inverse(this);
});