Skip to content

Instantly share code, notes, and snippets.

@diverted247
Last active December 14, 2015 02:28
Show Gist options
  • Save diverted247/5013385 to your computer and use it in GitHub Desktop.
Save diverted247/5013385 to your computer and use it in GitHub Desktop.
Dynamically extend a TS Class with Backbone EventDispatcher
module base.managers {
export class EventManager{
constructor(){
base._.extend( this , Backbone.Events );
}
//Call interface for Backbone.Events
//TODO: tighten with definition
on:any;
off:any;
trigger:any;
once:any;
listenTo:any;
stopListening:any;
//CUSTOM EVENT CONSTANTS
INIT:string = "APP_INIT";
CHANNEL:string = "APP_CHANNEL";
PRODUCT:string = "APP_PRODUCT";
COMPLETE:string = "APP_COMPLETE";
WINDOW_RESIZE:string = "APP_WINDOW_RESIZE";
LIBRARY_IMAGES_LOADED:string = "APP_LIBRARY_IMAGES_LOADED";
FONT_MAP_LOADED:string = "APP_FONT_MAP_LOADED";
FONT_SET_LOADED:string = "APP_FONT_SET_LOADED";
USER_IMAGES_LOADED:string = "APP_USER_IMAGES_LOADED";
USER_IMAGES_UPLOADED:string = "APP_USER_IMAGES_UPLOADED";
USER_IMAGE_REMOVED:string = "APP_USER_IMAGE_REMOVED";
KEYWORD_SEARCH:string = "APP_KEYWORD_SEARCH";
ERROR_CATALOG_LOADED:string = "APP_ERROR_CATALOG_LOADED";
ERROR_LOGGED:string = "APP_ERROR_LOGGED";
USER_REGISTER:string = "APP_USER_REGISTER";
USER_LOGIN:string = "APP_USER_LOGIN";
USER_SAVE_ITEM:string = "APP_USER_SAVE_ITEM";
}
}
@diverted247
Copy link
Author

Notes:
We keep an instance of underscore at base._

Use:
base.events = new base.managers.EventManager();
base.events.on( base.events.APP_INIT , baseAppInit );
base.events.trigger( base.events.APP_INIT );

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment