通过Handlebars自定义函数支持复杂逻辑表达式
发布于 3天前 作者 ladykiller 77 次浏览 来自 分享

/* 主要思想是使用eval执行想要的逻辑。以拼接字符的模式来进行逻辑判断理论上可以如同EL表达式一样处理页面上的大部分逻辑。 如:{{#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(' ')+"."); } });

1 回复

机智啊 用传递表达式做参数

回到顶部