Module: Volt::ClassEventable::ClassMethods

Defined in:
lib/volt/reactive/class_eventable.rb

Instance Method Summary collapse

Instance Method Details

#on(*events, &callback) ⇒ Object

Eventable also provides a static version of on, which allows you to setup on events at the class level. When the event triggers, self will be set to the instance it was triggered on.



19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/volt/reactive/class_eventable.rb', line 19

def on(*events, &callback)
  raise '.on requires an event' if events.size == 0

  listener = Listener.new(self, events, callback)

  self.__listeners__ ||= {}

  events.each do |event|
    listeners = self.__listeners__
    listeners[event] ||= []
    listeners[event] << listener
  end
end

#remove_listener(event, listener) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
# File 'lib/volt/reactive/class_eventable.rb', line 33

def remove_listener(event, listener)
  listeners = self.__listeners__
  if listeners
    listeners[event].delete(listener)

    if listeners[event].size == 0
      # No registered listeners now on this event
      listeners.delete(event)
    end
  end
end