#javascript #angularjs
#javascript #angularjs
Вопрос:
У меня есть eventService
, который будет использоваться в нескольких модулях под одним ngApp
. Он имеет стандартное использование:
eventService.on('eventName');
Дело в том, что я хочу украсить on
функцию, чтобы добавить к eventName
ней некоторый идентификатор, уникальный для модуля, который ее использует.
Я думал об использовании декоратора внутри фазы конфигурации каждого модуля, например:
// App
var myApp = angular.module('myApp', ['eventServiceModule']);
myApp.config(function($provide, eventServiceProvider) {
$provide.decorator('eventService', eventServiceProvider.decorateWithId(20));
});
// Decorator function (inside eventService)
decorateWithId: (moduleId) => {
return ['$delegate',function ($delegate) {
const originalOn = $delegate.on;
const newEventing = {};
newEventing.on = function(event) {
arguments[0] = `${moduleId}_` event;
originalOn.apply($delegate, arguments);
};
return Object.assign(newEventing, $delegate);
}
];
}
Но, по-видимому, каждый декоратор получает новый объект декоратора вместо нового объекта с уникальным идентификатором, как я надеялся.
Есть ли способ исправить это или новый подход для достижения этой цели?