javascript - Handlebars 助手未获取变量值

标签 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>

最佳答案

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

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

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

或者您可以使用一个组件并从中获得一些乐趣,如下所示:

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

(尝试更改 bob 输入)

关于javascript - Handlebars 助手未获取变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29356376/

相关文章:

javascript - Ember CLI + Ember 数据 + 简单验证 : authorize gets not called

javascript - 在 Ember 中,您可以使用组件助手覆盖组件函数吗?

handlebars.js - Handlebars 主体部分

c# - 将 C# ASPX 转换为 Handlebars 模板

javascript - React重新渲染导致闪烁: How can i fix this?

使用下一个和上一个按钮选择 Javascript 日期

javascript - 如何使 <div> 标签内的元素一次消失一个

javascript - 如何与 Ember.js 安全地共享 Rails 配置?

javascript - Ember/Handlebars 提供 [object Object] 而不是来自 JSON 对象的字符串

javascript - 如何完全推迟加载 Google reCaptcha 直到页面完全加载