【问题标题】:Handlebars helper not getting value of variable车把助手没有获得变量的值
【发布时间】:2015-03-30 21:11:34
【问题描述】:

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

下面列出了相关代码sn-ps,还创建了一个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>

【问题讨论】:

    标签: javascript ember.js handlebars.js


    【解决方案1】:

    Handlebars 助手不能很好地处理绑定属性。

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

    例如http://emberjs.jsbin.com/fudadugemu/2/edit?html,js,output

    或者您可以使用一个组件并从中获得一点乐趣,就像这样:

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

    (尝试更改 bob 输入)

    【讨论】:

    • 嗨,Kori,感谢您的回复。很失望听到助手不使用绑定属性......几乎使它们无用。是否可以使用未绑定的属性?认为我被那里的车把助手库误导了,例如:github.com/danharper/Handlebars-Helpers,但他们似乎遇到了同样的问题
    • 当我说“不要打得很好”时,我的意思是你可以做到,它只需要跳过篮球。如果你真的有心去做:emberjs.com/api/classes/…
    猜你喜欢
    • 2014-06-30
    • 2020-04-02
    • 2014-09-25
    • 1970-01-01
    • 1970-01-01
    • 2013-02-05
    • 2019-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多