我想从咖啡脚本类发出事件,类似于 Backbone.View 的做法。
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"
但这可能会以某种方式重构,所以我从倒计时实例而不是 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 以及完全正常工作的触发器和 on 方法。所以应该可以扩展它,而不是编写我自己的发射器。