我使用车把为我的骨干应用程序创建模板,并且我使用了车把ifCond帮助程序(源代码已经可用)。使用这个辅助函数,我可以轻松地检查两个值,例如
{{#ifCond val1 val2 operator="!="}}
{{/ifCond}}
同样,我可以使用" ==",">","<"运算符。
但现在我想使用&&,|| if条件块中的运算符,例如
{{#ifCond val1 && val2}}
{{/ifCond}}
我想在if块中使用数学运算符,例如
{{#ifCond val1+1 val2 operator=">"}}
{{/ifCond}}
请告诉我这是最好的方法。
答案 0 :(得分:4)
您可以使用Javascript的“eval”方法在您的帮助函数中执行此操作。
HandleBars.registerHelper("evalExpression", function(){
var me = this, result,
args = Array.prototype.slice.call(arguments),
options = args.pop(),
params = args,
expression = options.hash.expression;
expression = expression.replace(/\#([0-9]+)/g, function(match, val){
return params[val];
});
result = eval(expression);
if(options.hash.returnBool == "true"){
if(result){
return options.fn(this)
}else{
return options.inverse(this);
}
}else{
return result;
}
})
然后在车把模板中使用: -
{{#evalExpression val1 val2 expression="#0 && #1" returnBool="true"}}
{{else}}
{{/evalExpression }}
并且:
{{#evalExpression val1 1 val2 expression="(#0+#1) > #2" returnBool="true"}}
{{else}}
{{/evalExpression }}