123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- 'use strict';
- define(['underscore', './EventRouter'], function (_, EventRouter) {
- var EventChannelRouter = EventRouter.extend({
-
- globalEventRouter: null,
-
- eventNames: null,
-
- channelId: null,
-
- _alias: null,
- init: function init(options) {
- EventChannelRouter.inherited('init', this, arguments);
- this.globalEventRouter = options.globalEventRouter;
- this.channelId = options.channelId;
- this.eventNames = options.eventNames;
- this._alias = options.alias;
- },
- _isPrivateEvent: function _isPrivateEvent(eventName) {
- return _.find(this.eventNames, function (name) {
- return name === eventName;
- });
- },
- _getChanneledEventName: function _getChanneledEventName(name) {
- return this.channelId + '_' + name;
- },
- on: function on(eventName, handler, context) {
- if (this._isPrivateEvent(eventName)) {
- EventChannelRouter.inherited('on', this, [this._getChanneledEventName(eventName), handler, context]);
- } else {
- this.globalEventRouter.on(eventName, handler, context);
- }
- },
- off: function off(eventName, handler, context) {
- if (this._isPrivateEvent(eventName)) {
- EventChannelRouter.inherited('off', this, [this._getChanneledEventName(eventName), handler, context]);
- } else {
- this.globalEventRouter.off(eventName, handler, context);
- }
- },
- trigger: function trigger(eventName, event) {
- if (this._isPrivateEvent(eventName)) {
- EventChannelRouter.inherited('trigger', this, [this._getChanneledEventName(eventName), event]);
- } else {
- this.globalEventRouter.trigger(eventName, event);
- }
- }
- });
- return EventChannelRouter;
- });
|