2013-03-25 64 views
0

请考虑以下示例http://jsfiddle.net/YmWW2/处理事件时避免样板代码(Backbone,CoffeeScript)

如何避免冗余方法,如execFooexecBarexecBaz直接传递字符串像"foo"exec方法?

events: 
    "click a#foo" : "execFoo" 
    "click a#bar" : "execBar" 
    "click a#baz" : "execBaz" 

execFoo: -> @exec "foo" 
execBar: -> @exec "bar" 
execBaz: -> @exec "baz" 

exec: (x) -> alert x 
+0

你问你如何将你的方法绑定到参数而不是定义一个匿名方法,如果是这种情况,请检查'bind'方法。 – 2013-03-25 19:38:27

回答

1

如果我正确理解你的问题,你可以得到“富”,通过检查的jQuery通过单击处理程序event object“酒吧”的信息。

例如,下面的代码片段应该提醒任何被点击的链接的id属性。

events: 
    'click a' : 'exec' 

exec: (event) -> 
    clickedLink = $(event.target) 
    alert(clickedLink.id()) 
+0

或者只是'alert event.target.id'。 jQuery为此目的有点矫枉过正。 – 2013-03-25 20:17:24

+1

实际上,我认为不是event.target,event.currentTarget需要用于获取锚点元素,因为Backbone将事件绑定实现为'@$el.on eventName,selector,listenerFunction'(释义)。 – 2013-03-25 20:24:31