var myApp = angular.module( 'myApp', [] ); myApp.controller( 'MyCtrl', [ '$scope', function ( $scope ) {}]); angular.forEach( [ 'blur', 'focus' ], function ( name ) { var directiveName = 'myng' + name.replace(/^\w/, function( char ) { return char.toUpperCase(); } ); myApp.directive( directiveName, [ '$parse', function( $parse ) { return function( scope, element, attr ) { var fn = $parse( attr[ directiveName ] ); element.bind( name.toLowerCase(), function( event ) { scope.$apply( function () { fn( scope, { $event: event } ); }); }); }; }]); });