HandlebarsJS这个自定义helper如何改进?
使用:{{#expression a '==' b '&&' c '>' 0}}
var hbs = require('handlebars');
hbs.registerHelper('expression', function() {
var exps = [];
try{
//最后一个参数作为展示内容,也就是平时的options。不作为逻辑表达式部分
var arg_len = arguments.length;
var len = arg_len-1;
for(var j = 0;j<len;j++){
exps.push(arguments[j]);
}
var result = eval(exps.join(' '));
if (result) {
return arguments[len].fn(this);
} else {
return arguments[len].inverse(this);
}
}catch(e){
throw new Error('Handlerbars Helper "expression" can not deal with wrong expression:'+exps.join(' ')+".");
}
});
存在问题:不能做string类型的比较
data = {
name : 'rose',
age : 20
}
比如 {{#expression this.name '==' 'rose' '&&' this.age '==' 20}}
就会出现报错:
// eval(exps.join(' '))
eval(rose == rose && 20 == 20)
// 错误
'Handlerbars Helper "expression" can not deal with wrong expression:rose == rose && 20 == 20.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
错误都不完整啊,在网上找个比较字符串的方法。粘贴到你的help方法里。改成你要比较的。返回true或者false。有个问题就是你要使用你这个help的话。一定要在使用的上一层引用一下。比如help叫addone。上一层div。就需要div test=“addone”之后在使用才能成功