车把助手没有获得变量的价值
Handlebars helper not getting value of variable
我正在尝试为 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 助手不能很好地处理绑定属性。
通常您会希望在模板中避免此类逻辑。具体来说,要么在你的控制器上创建一个方法,要么在对象本身上创建一个方法,这样你就可以说:if item.isBob
.
例如http://emberjs.jsbin.com/fudadugemu/2/edit?html,js,output
或者您可以使用一个组件并从中获得一些乐趣,像这样:
http://emberjs.jsbin.com/buyeqenumo/2/edit
(尝试改变 bob 输入)
我正在尝试为 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 助手不能很好地处理绑定属性。
通常您会希望在模板中避免此类逻辑。具体来说,要么在你的控制器上创建一个方法,要么在对象本身上创建一个方法,这样你就可以说:if item.isBob
.
例如http://emberjs.jsbin.com/fudadugemu/2/edit?html,js,output
或者您可以使用一个组件并从中获得一些乐趣,像这样:
http://emberjs.jsbin.com/buyeqenumo/2/edit
(尝试改变 bob 输入)