我有以下代码:
{{#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}}
,它仍然给出了解析器错误。
所以我想也许您必须使用一个助手来完成这种事情,但是我也无法获得我注册的任何助手来工作。
答案 0 :(得分:0)
结果证明,#if
助手只能测试属性是真还是假-不能测试任意表达式[source],因此您必须使用助手进行所有操作。只需编写一个函数即可将其与逻辑运算符进行比较并返回true
或false
。
为避免麻烦,调用帮助程序的语法也不使用括号。...参数之间用空格分隔,就像在rails中一样。看起来像这样:
{{myHelperFunction myarg1 myarg2}}
如果您想嵌套助手,则需要括号:
{{myOuterHelper (myInnerHelper myarg1 myarg2)}}
最后一个提示,如果您想将辅助对象与#if
嵌套在一起,则也需要括号:
{{#if (myHelper myarg1 myarg2)}} content {{/if}}