Skip to content

Instantly share code, notes, and snippets.

@donut
Last active August 29, 2015 14:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save donut/e4268b600bf72a8290e8 to your computer and use it in GitHub Desktop.
Save donut/e4268b600bf72a8290e8 to your computer and use it in GitHub Desktop.
###*
* @file
* Provides support for classes to have event systems.
* @url https://gist.github.com/donut/e4268b600bf72a8290e8
###
class EventsMixin
constructor: ->
@_event_handlers = {}
bind: (event, handler) ->
@_event_handlers[event] ?= []
return yes if handler in @_event_handlers[event]
@_event_handlers[event].push handler
yes
unbind: (event, handler) ->
return yes unless event of @_event_handlers
index = $.inArray handler, @_event_handlers[event]
return yes if index is -1
@_event_handlers[event].splice index, 1
yes
_trigger: (event, args...) ->
console.log 'triggering', event, 'handlers', @_event_handlers[event]
return null unless event of @_event_handlers
handler args... for handler in @_event_handlers[event]
module.exports = EventsMixin
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment