switch angularjs angularjs-directive

angularjs - switch - Angular-Directivas de decoración



ng switch angular 6 (2)

Este artículo muestra cómo puede, de hecho, usar decorator () con directivas.

Solo debe incluir "Directiva" como el sufijo del nombre. Por lo tanto, en mi ejemplo, debería haber estado haciendo

return $provide.decorator(''myDirectiveDirective'', [''$delegate'', ''$log'', function($delegate, $log) { // TODO - It worked! Do something to modify the behavior $log.info("In decorator"); // Article uses index 0 but I found that index 0 was "window" and index 1 was the directive var directive = $delegate[1]; }

http://angular-tips.com/blog/2013/09/experiment-decorating-directives/

Estoy tratando de usar la capacidad de "decorador" de Angular para agregar funcionalidad a algunas directivas. Supongamos que el nombre de mi directiva es myDirective. Mi código se ve así:

angular.module(''app'').config([ ''$provide'', function($provide) { return $provide.decorator(''myDirective'', [ ''$delegate'', ''$log'', function($delegate, $log) { // TODO - It worked! Do something to modify the behavior $log.info("In decorator"); } ]); }

]);

Sigo recibiendo este mensaje:

Uncaught Error: [$injector:unpr] Unknown provider: myDirectiveProvider from app

Según mi mejor criterio, las directivas ya están registradas cuando se ejecuta la función de decorador. ¡Cualquier idea sería apreciada!


Los decoradores creados con el método de decorator son solo para servicios . Deben crearse con service , factory , provider o value . Vea los documentos aquí .

Si desea decorar una directiva, puede hacer otra directiva con el mismo nombre. Ambas directivas se usarán cuando se compile el DOM, y puede definir el orden de compilación utilizando la prioridad .

Alternativamente, si puede modificar el código que usa la directiva que intenta decorar, puede simplemente crear una nueva directiva que use el original en su plantilla.