把手帮手没有得到变量值

时间:2015-03-30 21:11:35

标签: javascript ember.js handlebars.js

我正在尝试为Handlebars / Ember应用程序创建自定义“if_eq”帮助程序。使用以下语法调用帮助程序:{{#if_eq item.name'bob'}},但接收2个字符串值进行比较(字面意思为'item.name'和'bob'),而不是“item”的值.name“在它被调用的上下文中。想知道我可能做错了什么。谢谢!

下面列出了相关的代码段,并创建了一个jsbin来说明问题here

帮助代码

Handlebars.registerHelper('if_eq', function(a, b, opts) {
    console.log( "Comparing ", a, b);
    if(a == b)
        return opts.fn(this);
    else
        return opts.inverse(this);
});

模板代码

<ul>
    {{#each item in model}}
        {{#if_eq item.name 'bob'}}
            <li>We have a bob here!</option>
        {{else}}
            <li>A non-bob</li>
        {{/if_eq}}
    {{/each}}
</ul>

1 个答案:

答案 0 :(得分:2)

车把帮助者不喜欢绑定属性。

通常,您希望在模板中避免使用此类逻辑。具体来说,要么在控制器上创建一个方法,要么在对象本身上创建一个方法,这样就可以这样说:if item.isBob

E.g。 http://emberjs.jsbin.com/fudadugemu/2/edit?html,js,output

或者你可以使用一个组件并对它有一点乐趣,如下所示:

http://emberjs.jsbin.com/buyeqenumo/2/edit

(尝试更改bob输入)