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 //}]); 
  • Argumento de directiva personalizada de AngularJS con espacios
  • Plantilla AngularJS vs templateURL en directiva
  • ¿Cómo hacer que la altura de un elemento sea igual a su ancho en Ionic?
  • Obteniendo una list de todos los events que potencialmente pueden pasar por un scope angular. $$ listenerCount?
  • Directiva anidada con el método templateUrl dynamic que falla
  • Uso angular del plugin jQuery con object en controller externo
  • Angular JS cómo leer los nombres de los files css que se cargan en la página html
  • Acelerando la function de compilation $ angular
  • Cómo pasar un object de una directiva anidada con scope aislado al scope del controller principal en angular
  • AngularJS - Usa la directiva de attributes condicionalmente
  • La unión de datos bidireccional de la Directiva AngularJS no funciona cuando se observa Boolean
  • Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.