Чтобы создать директиву/контроллер/фабрику, вы предоставляете функцию, служащую «точкой инъекции»:
angular.module('myApp').directive('myDirective', ['dependencies', function injectionPoint(dependencies) {}]);
Можете ли вы предоставить это injectionPoint
через другую функцию, зарегистрированную в Angular? например factory
? Я должен отметить, что я объявил все в отдельных файлах, и я пытаюсь сделать это «угловым способом» и не создавать ненужные глобальные переменные.
В частности, у меня есть две директивы ввода, которые в основном одинаковы, только с разными шаблонами и изолированным объявлением области.
Я думал создать «фабрику директив», которую я мог бы использовать, например:
function directiveFactory(scopeOverride, extraInit) {
return function directiveInjectionPoint(depedencies) {
return { restrict...,
template...,
scope: angular.extend({/*defaults*/}, scopeOverride),
link: function(...) {
// default stuff
if(angular.isDefined(extraInit)) extraInit($scope, el, attrs);
}
}
}
который я бы тогда использовал как:
angular.module('myApp')
.directive('myDirective1', directiveFactory({/* new stuff */))
.directive('myDirective2', directiveFactory({/* other stuff */, fn2...));
Но как мне зарегистрировать эту функцию в Angular, а затем использовать ее в объявлении директивы?