我正在写一个简单的餐厅菜单,我需要检查车把模板内的两个值是否相等。更具体地说,我有一堆dish
模型,其中category_id
字段。所以我需要显示一个dish
,如果它与我们现在的类别category_id
相同。
我有以下帮助:
Em.Handlebars.registerHelper 'ifEqual', (v1, v2) ->
# debugging
console.log v1, v2
return v1 == v2
我用这种方式:
.categories
=hb 'each c in categories' do
%ul
%li=hb 'c.name'
=hb 'each d in dishes' do
%ul
=hb 'ifEqual d.category_id c.id' do
%li=hb 'd.name'
(对不起hamlbars和coffeescript,但应该很清楚)
问题是console.log
输出了字符串"d.category_id"
和"c.id"
,我不知道它为什么会这样工作。
另一方面,非块帮助程序工作非常好并输出实际值
Em.Handlebars.helper 'console-log', (v1, v2) ->
console.log typeof(v1), v1
console.log typeof(v2), v2
为什么它以这种方式工作以及我做错了什么?
答案 0 :(得分:1)
为了节省你的时间,这在ember把手中不起作用,你需要将逻辑添加到控制器中,只需使用if / unless。
Is it possible to pass conditionals or other javascript as arguments in ember handlebars?