backbone.js - 具有辅助功能的 Handlebars 逻辑运算

标签 backbone.js handlebars.js

我正在使用handlebar为我的主干应用程序创建模板,并且我正在使用handlebar ifCond helper(源代码已经可用)。使用这个辅助函数,我可以轻松地检查两个值,例如

{{#ifCond val1 val2 operator="!="}}
{{/ifCond}}

同样,我可以使用“==”、“">”、“<”运算符。

但现在我想使用&&、|| if 条件 block 中的运算符,例如

{{#ifCond val1 && val2}}
{{/ifCond}}

我想在 if block 中使用数学运算符,例如

{{#ifCond val1+1 val2 operator=">"}}
{{/ifCond}}

请建议我最好的方法是什么。

最佳答案

您可以使用 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;
        }

    })

然后在 Handlebars 模板中使用:-

{{#evalExpression val1 val2 expression="#0 && #1" returnBool="true"}}

{{else}}

{{/evalExpression }}

并且:

{{#evalExpression val1 1 val2 expression="(#0+#1) > #2" returnBool="true"}}

{{else}}

{{/evalExpression }}

关于backbone.js - 具有辅助功能的 Handlebars 逻辑运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24100768/

相关文章:

node.js - 在 Koa 中使用多个 View 目录

knockout.js - 将 Handlebars.js 预编译模板与 KnockoutJS 结合使用

javascript - 如何使用 Parse.com JavaScript SDK 上传图像?

javascript - 显示具有双重渲染 View 的弹出窗口

javascript - 缓存:false in ajax call attach a value with URl

javascript - 聆听 Handlebars 渲染

javascript - 保存 Backbone 模型时究竟发生了什么?

json - underscore.js - 对象不支持此属性或方法 - ie8

javascript - 标签未解释

javascript - Handlebars.js 在数据标签中嵌入文字 json 对象