Skip to content

Instantly share code, notes, and snippets.

@adasq
Created December 15, 2015 10:57
Show Gist options
  • Save adasq/460e53d55d095dad6927 to your computer and use it in GitHub Desktop.
Save adasq/460e53d55d095dad6927 to your computer and use it in GitHub Desktop.
angular.module('ctrl-injector', ['ui.router'])
.directive('ctrlInjector', ["$q", "$log", "$controller", "$resolve", function ($q, $log, $controller, $resolve) {
var link = function (scope, $element) {
$resolve.resolve(scope.config.resolve || {}).then(function (result) {
var dependancies = _.extend(scope.config.dependancies || {}, result);
var controller = $controller(scope.config.controller, dependancies);
scope[scope.config.controllerAs] = controller;
scope._common = scope.config.common || {};
if (scope.config.customizeController) {
scope.config.customizeController(controller);
}
$element.data('$ngControllerController', controller);
$element.children().data('$ngControllerController', controller);
scope.ready = true;
}, function (result) {
});
};
return {
link: link,
scope: {
config: '='
},
restrict: 'E',
template: '<div ng-if="ready" ng-include="config.templateUrl"></div>'
};
}]);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment