自定义ember块助手的参数

时间:2013-12-19 15:18:03

标签: ember.js coffeescript haml

我正在写一个简单的餐厅菜单,我需要检查车把模板内的两个值是否相等。更具体地说,我有一堆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

为什么它以这种方式工作以及我做错了什么?

1 个答案:

答案 0 :(得分:1)

为了节省你的时间,这在ember把手中不起作用,你需要将逻辑添加到控制器中,只需使用if / unless。

Is it possible to pass conditionals or other javascript as arguments in ember handlebars?