Lad*_*igo 5 javascript jquery coffeescript
我是coffescript的新手,但我对将事件从jquery绑定到coffeescript类实例的最佳方法是什么感兴趣?我试图防止我的班级中有太多嵌套的回调:
class Page
id2clicks : 0
id3clicks : 0
id4clicks : 0
onLoad: ->
$('#id2').on 'click', @ , @onId2Click
$('#id3').on 'click', $.proxy(@onId3Click,@)
$('#id4').on 'click' , () =>
@id4clicks++
alert @id4clicks
onId2Click: (e) ->
e.data.id2clicks++
alert e.data.id2clicks
onId3Click: ->
@id3clicks++
alert @id3clicks
p = new Page()
p.onLoad()
Run Code Online (Sandbox Code Playgroud)
所有3种方法都有效...有没有更好的方法/建议来做到这一点?
小智 3
就我个人而言,我更喜欢这种方式,因为它是最短的并且显示内联处理程序(请注意,我还省略了括号):
$('#id4').on 'click' , =>
@id4clicks++
alert @id4clicks
Run Code Online (Sandbox Code Playgroud)
这对于矮个子处理者来说非常好。然而,偶尔你有一个想要拆分出来并在其他地方重用的函数,在这种情况下我更喜欢使用类似的东西
$('#id2').on 'click', $.proxy(@onId2Click, @)
Run Code Online (Sandbox Code Playgroud)
甚至
$('#id2').on 'click', (e) =>
@onId2Click e
Run Code Online (Sandbox Code Playgroud)
另一种方法是写
onId3Click: =>
@id3clicks++
alert @id3clicks
Run Code Online (Sandbox Code Playgroud)
并使用
$('#id3').on 'click', @onId3Click
Run Code Online (Sandbox Code Playgroud)
但我个人不鼓励这样做,因为大多数人不希望@onId3Click成为一个绑定函数,它迫使他们跳转到定义要检查的代码部分。
| 归档时间: |
|
| 查看次数: |
6704 次 |
| 最近记录: |