angular.module('app') .directive('uiModule', ['MODULE_CONFIG','uiLoad', '$compile', function(MODULE_CONFIG, uiLoad, $compile) { return { restrict: 'A', compile: function (el, attrs) { var contents = el.contents().clone(); return function(scope, el, attrs){ el.contents().remove(); uiLoad.load(MODULE_CONFIG[attrs.uiModule]) .then(function(){ $compile(contents)(scope, function(clonedElement, scope) { el.append(clonedElement); }); }); } } }; }]);