Directivas de compilation a través del service en angularjs

Estoy intentando comstackr directivas a través de un service angular, pero desafortunadamente no funciona. La idea es mostrar errores en windows emergentes.

Modifiqué el service $ exceptionHandler :

crm.factory('$exceptionHandler', function(popup) { return function(exception) { popup.open({message: exception}); } }); 

El service emergente se ve así:

 crm.factory('popup', function ($document) { return { open: function (data) { var injector = angular.element(document).injector(), $compile = injector.get('$compile'), template = angular.element('<popup></popup>'); // var ctmp = $compile(template.contents()); $compile(template.contents()); $document.find('body').append(template); } }; }); 

Y no creo que esta sea una buena idea para codificar el service $ compile (pero no tengo ninguna idea de cómo realizar esto en angular):

 $compile = injector.get('$compile') 

Directiva emergente :

 crm.directive('popup', function () { return { restrict: 'E', replace: true, templateUrl: '/public/js/templates/common/popup.html', link: function() { console.log('link()'); }, controller: function () { console.log('ctrl()'); } }; }); 

¿Puede haber otras forms de hacer esto? Gracias.

One Solution collect form web for “Directivas de compilation a través del service en angularjs”

Puedes inyectar $compile directamente en tu service, y no estás usando $compile correctamente:

 //commented alternative lines for allowing injection and minification since reflection on the minified code won't work //crm.factory('popup', ['$document', '$compile', function ($document, $compile) { crm.factory('popup', function ($document, $compile) { return { open: function (data) { var template = angular.element('<popup></popup>'), compiled = $compile(template); $document.find('body').append(compiled); } }; }); //closing bracket for alternative definition that allows minification //}]); 
  • Dos menus desplegables con el mismo valor. Si el usuario selecciona un valor en el primer menu desplegable, ese valor debe deshabilitarse en el segundo menu desplegable.
  • El filter de input básico de directiva personalizada angular no funciona correctamente, solo muestra la 1ª instancia de coincidencia
  • angularjs: ngModel controller $ parser & $ formatter todavía se activa después de eliminar el elemento
  • AngularJS - ¿Es posible cambiar el valor de ngModel attribute on directive en link o compile?
  • Pasar automáticamente $ evento con ng-clic?
  • ng-style con valor interpolado no representa la image de background?
  • Selector de date de inicio de session de UI angular combinado con UI.Mask
  • Amazon DynamoDB y AngularJS
  • Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.