This is nice code. I'm surprised a flexible event-firing and -listening framework isn't already part of angular. Or is this code an extension of something that already exists?