我希望能够像这样在dust.js中添加一个值:
this is x+1 : {{x}+1} //does not work :'(
我知道我可以用一个助手来做到这一点(非常冗长)
this is x+1 : {@math key="x" method="add" operand="1" /}
我可以忍受(但不快乐)
但是当我想嵌套一个参数时呢?
this is x+1+1 : {@math key='{@math key="x" method="add" operand="1" /}' method="add" operand="1" /} // no dice and wins ugly code prize!
this is x+1+1 : {@math key='x' method="add" operand="1"} {@math key="selectKey" method="add" operand="1" /} {/math} //still no dice - btw selectKey is an output variable for the @math helper
是否有可能做到这一点?我很想尝试在核心库中修补它,因为它让我非常恼火。
还有什么其他方法可以做到这一点?创建临时变量(即 {xplus1})?我目前的解决方案是将任何/所有逻辑移至助手 - 我正在编写很多助手。
更新:
我编写了一个可以创建作用域变量的助手。这似乎是一种干净的方法。
{@eval xplus1="{x} + 1"}
... scope where x = x+1
this is x+1 : {xplus1}
{/eval}
现在它正在使用 JavaScript eval,但我正在考虑使用 JS 数学库,如JavaScript Expression Evaluator或math.js