Javascript 车把辅助对象未获取变量的值

Javascript 车把辅助对象未获取变量的值,javascript,ember.js,handlebars.js,Javascript,Ember.js,Handlebars.js,我正在尝试为车把/余烬应用程序创建一个自定义的“if_eq”助手。使用以下语法调用帮助程序:{{{#if_eq item.name'bob'},但正在接收2个要比较的字符串值(字面意思是'item.name'和'bob'),而不是调用它的上下文中的值“item.name”。想知道我可能做错了什么。谢谢 下面列出了相关的代码片段,并创建了一个jsbin来说明问题 助手代码 Handlebars.registerHelper('if_eq', function(a, b, opts) { c

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

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

助手代码

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.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>
    {{{#模型中的每个项目} {{{if#u eq item.name'bob}
  • 我们这里有一个鲍勃! {{else}
  • 非鲍勃
  • {{/if_eq} {{/每个}}

车把助手不能很好地处理绑定属性

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

例如

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


(尝试更改bob输入)

嘿,Kori,谢谢你的回复。听说助手不能处理绑定属性,我很失望。。。几乎使它们毫无用处。是否可以使用未绑定的属性?我想我被车把助手库误导了,比如:,但是他们也有同样的问题,当我说“不要玩得很好”的时候,我的意思是你可以做到,这只需要跳过篮筐。如果你真的下定决心要这么做: