Skip to content

Commit

Permalink
Fixes #44
Browse files Browse the repository at this point in the history
  • Loading branch information
Michael Peters committed Oct 6, 2015
1 parent 01e12a0 commit 7cc3844
Showing 1 changed file with 39 additions and 24 deletions.
63 changes: 39 additions & 24 deletions angular-css.js
Original file line number Diff line number Diff line change
Expand Up @@ -570,6 +570,17 @@
**/
var $directives = [];
var originalModule = angular.module;
var arraySelect = function(array, action) {
return array.reduce(
function(previous, current) {
previous.push(action(current));
return previous;
}, []);
};
var arrayExists = function(array, value) {
return array.indexOf(value) > -1;
};

angular.module = function () {
var module = originalModule.apply(this, arguments);
var originalDirective = module.directive;
Expand All @@ -579,36 +590,40 @@
try {
var directive = angular.copy(originalDirectiveFactory)();
directive.directiveName = directiveName;
if (directive.hasOwnProperty('css')) {
$directives.push(directive);
if (directive.hasOwnProperty('css') && !arrayExists(arraySelect($directives, function(x) {return x.dir.directiveName}), directiveName)) {
$directives.push({dir: directive, handled: false});
}
} catch (e) { }
return originalDirective.apply(this, arguments);
};
module.config(['$provide','$injector', function ($provide, $injector) {
angular.forEach($directives, function ($directive) {
var dirProvider = $directive.directiveName + 'Directive';
if ($injector.has(dirProvider)) {
$provide.decorator(dirProvider, ['$delegate', '$rootScope', '$timeout', function ($delegate, $rootScope, $timeout) {
var directive = $delegate[0];
var compile = directive.compile;
if (directive.css) {
$directive.css = directive.css;
}
directive.compile = function() {
var link = compile ? compile.apply(this, arguments): false;
return function(scope) {
var linkArgs = arguments;
$timeout(function () {
if (link) {
link.apply(this, linkArgs);
}
});
$rootScope.$broadcast('$directiveAdd', directive, scope);
angular.forEach($directives, function ($dir) {
if (!$dir.handled) {
var $directive = $dir.dir;
var dirProvider = $directive.directiveName + 'Directive';
if ($injector.has(dirProvider)) {
$dir.handled = true;
$provide.decorator(dirProvider, ['$delegate', '$rootScope', '$timeout', function ($delegate, $rootScope, $timeout) {
var directive = $delegate[0];
var compile = directive.compile;
if (directive.css) {
$directive.css = directive.css;
}
directive.compile = function() {
var link = compile ? compile.apply(this, arguments): false;
return function(scope) {
var linkArgs = arguments;
$timeout(function () {
if (link) {
link.apply(this, linkArgs);
}
});
$rootScope.$broadcast('$directiveAdd', directive, scope);
};
};
};
return $delegate;
}]);
return $delegate;
}]);
}
}
});
}]);
Expand Down

0 comments on commit 7cc3844

Please sign in to comment.