Decorator sample with Hack
by yoorek
HTML
<div ng-app="app">
<button ng-click="alert('Clicked!')">click Me!</button>
</div>
JavaScript
var changeDirectiveFunction = function ($delegate) {
var ngClick = $delegate[0],
compile = ngClick.compile;
ngClick.compile = function (element, attrs, transclude) {
console.log('ngClick compile');
return compile(element, attrs, transclude);
};
return $delegate;
};
angular.module('app', [])
.config(function ($provide) {
$provide.decorator('ngClickDirective', changeDirectiveFunction);
})
.hackDirective('ngClick', changeDirectiveFunction)
.run(function ($rootScope, $window) {
$rootScope.alert = function (message) {
$window.alert(message);
};
});
// special hack
var originalModule = angular.module;
angular.module = function () {
var module = originalModule.apply(this, arguments);
module.hackDirective = function (name, fn) {
module.config(function ($provide) {
$provide.decorator(name + 'Directive', fn);
});
};
return module;
};