Мы сейчас переходим к Google Closure Compiler. Мы рефакторинг нашей старого кода базы поэтому его подгонка к этой статье: A radical new approach to developing AngularJS appsУгловая директива фабрики только называется один
директивы должна выглядеть следующим образом:
/**
* @constructor
*/
var Directive = function(version) {
this.version = version;
this.link = this.link.bind(this);
this.scope;
this.elem;
this.attrs;
};
/**
* Version directive factory. Entry point and used in `module.directive`.
*/
Directive.factory = function(version) {
var dir = new Directive(version);
return {
link: dir.link
};
};
/**
* Linking function.
*/
Directive.prototype.link = function(scope, elem, attrs) {
this.scope = scope;
this.elem = elem;
this.attrs = attrs;
this.elem.text(this.version.get());
};
angular.module('app', [])
.directive('version', Directive.factory);
Все работает отлично, пока мы не используем директиву несколько раз на сайте. Directive.factory
будет вызываться только один раз. Таким образом, все директивы на сайтах имеют один и тот же объект Directive. Мы не понимаем, почему это происходит.
Заводы, службы, значения и т. Д. Объявляются только один раз в жизненном цикле углового приложения ... Вы можете сделать этот «объект», скажем, сервисом ... и ввести его в свою директиву. Неужели этого недостаточно для того, чего вы хотите достичь? – deostroll
Мы хотим использовать нашу директиву как конструктор. Я не знаю, как услуга нам поможет. – tschiela
Вы имеете в виду, что каждая директива «версия» на странице должна отличаться от других, потому что она была определена с фабрикой? Этого не произойдет, так не получается. – estus