我正在尝试为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>
答案 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输入)