0
我想從coffeescript類發出事件,類似於Backbone.View的做法。從coffeescript類發出事件
class Countdown extends Backbone.View
countdown = new Countdown
countdown.on "complete", ->
something()
因此,沒有Backbone.js的,例如:
class Countdown extends SomeEmitter
countdown = new Countdown
countdown.start()
countdown.on "complete", ->
something()
大氣壓我有這樣的事情:
class SomeEmitter
events: $({})
#So I need to countdown.events.on "complete"
但這probally可以以某種方式重構,所以我發出的事件倒計時實例而不是countdown.events。我在我的項目中不使用backbone.js,因此僅僅爲Backbone.Events部分包含它會很愚蠢。我想應該是可以延長$({})不知何故,或可用別的jQuery中
更新(jQuery.Event?):
我想我會去的東西就行了:
class SomeEmitter
constructor: ->
@events = ${{})
on: (eventName, cb) =>
@events.on eventName, cb
trigger: (eventName) =>
@events.trigger eventName
我不使用Backbone.Events(或查看代碼和複製件)的原因是因爲我有一個完全正常工作的觸發器和方法可供我使用的jQuery。所以應該可以擴展它,而不是寫我自己的發射器。
謝謝!生病更新我的問題與答案 – Jareish
@ nicksweet爲什麼使用胖箭頭('=>')而不是瘦的? – Zac
@zac胖箭頭只是一個簡單的方法來聲明一個函數,並將其綁定到「this」的當前值,就像聲明一個函數一樣。您可以在這裏查看更多信息:http://coffeescript.org/#fat-arrow – nicksweet