不能在 handlebars #if 语句中使用逻辑运算符?
Can't use logical operators in handlebars #if statement?
我有以下代码:
{{#if true}} An {{else}} A {{/if}
这就是整个模板。加载正常。但请注意 #if
条件只是 true
。如果我在那里放置文字以外的任何东西,它就不起作用。我输入的任何变量,任何类型的程序表达式,如 {{#if 3 > 5}}
,它都会给我一个解析器错误:
Error: Parse error on line 36:
{{#if 3 > 5 }} An {{else}} A
---------------------^
Expecting 'CLOSE_RAW_BLOCK', 'CLOSE', 'CLOSE_UNESCAPED', 'OPEN_SEXPR', 'CLOSE_SEXPR', 'ID', 'OPEN_BLOCK_PARAMS', 'STRING', 'NUMBER', 'BOOLEAN', 'UNDEFINED', 'NULL', 'DATA', got 'INVALID'
我想不通。我什至将它减少到 {{#if 3 > 5}} A {{/if}}
,但它仍然给出解析器错误。
所以我想也许你必须为这种事情使用助手,但我也找不到任何我注册的助手。
原来 #if
助手只能测试属性是真还是假 – 不能任意表达式[source],所以你必须用助手做所有事情。只需编写一个函数来比较逻辑运算符和 return true
或 false
.
为了省去一些麻烦,调用助手的语法也不使用括号....参数是 space 分隔的,就像在 rails 中一样。所以它看起来像:
{{myHelperFunction myarg1 myarg2}}
如果你想嵌套助手,你需要括号:
{{myOuterHelper (myInnerHelper myarg1 myarg2)}}
我的最后一个提示,如果你想用 #if
嵌套你的助手,你也需要括号:
{{#if (myHelper myarg1 myarg2)}} content {{/if}}
我有以下代码:
{{#if true}} An {{else}} A {{/if}
这就是整个模板。加载正常。但请注意 #if
条件只是 true
。如果我在那里放置文字以外的任何东西,它就不起作用。我输入的任何变量,任何类型的程序表达式,如 {{#if 3 > 5}}
,它都会给我一个解析器错误:
Error: Parse error on line 36:
{{#if 3 > 5 }} An {{else}} A
---------------------^
Expecting 'CLOSE_RAW_BLOCK', 'CLOSE', 'CLOSE_UNESCAPED', 'OPEN_SEXPR', 'CLOSE_SEXPR', 'ID', 'OPEN_BLOCK_PARAMS', 'STRING', 'NUMBER', 'BOOLEAN', 'UNDEFINED', 'NULL', 'DATA', got 'INVALID'
我想不通。我什至将它减少到 {{#if 3 > 5}} A {{/if}}
,但它仍然给出解析器错误。
所以我想也许你必须为这种事情使用助手,但我也找不到任何我注册的助手。
原来 #if
助手只能测试属性是真还是假 – 不能任意表达式[source],所以你必须用助手做所有事情。只需编写一个函数来比较逻辑运算符和 return true
或 false
.
为了省去一些麻烦,调用助手的语法也不使用括号....参数是 space 分隔的,就像在 rails 中一样。所以它看起来像:
{{myHelperFunction myarg1 myarg2}}
如果你想嵌套助手,你需要括号:
{{myOuterHelper (myInnerHelper myarg1 myarg2)}}
我的最后一个提示,如果你想用 #if
嵌套你的助手,你也需要括号:
{{#if (myHelper myarg1 myarg2)}} content {{/if}}