watchcollection que metodo eventos devuelve con javascript angularjs broadcast provider

javascript - que - AngularJs/.provider/¿cómo obtener el rootScope para realizar una transmisión?



metodo $on angular (3)

Mi forma de hacerlo es usar un decorador y volver al controlador de excepciones anterior en caso de errores desconocidos:

app.config(function ($provide) { $provide.decorator(''$exceptionHandler'', function($delegate, $injector) { return function (exception, cause) { if (ICanHandleThisError) { var rootScope= $injector.get(''$rootScope''); // do something (can use rootScope) } else $delegate(exception, cause); }; }); });

Ahora mi tarea es reescribir el proveedor $ exceptionHandler para que muestre el diálogo modal con el mensaje y detenga el evento predeterminado.

Lo que hago:

en el inicio del proyecto utilizo el método .provider:

.provider(''$exceptionHandler'', function(){ //and here I would like to have rootScope to make event broadcast })

El método de inyección standart no funciona.

UPD : sandbox - http://jsfiddle.net/STEVER/PYpdM/


Necesitas inyectar el $ rootScope:

.provider(''$exceptionHandler'', ''$rootScope'', function(){ //and here I would like to have rootScope to make event broadcast })

¿Es esto lo que intentaste? Y si es así, ¿tiene un mensaje de error o un jsfillde / plnkr para ver por qué falló?


Puedes inyectar el inyector y buscar el $ rootScope.

Demostración plunkr: http://plnkr.co/edit/0hpTkXx5WkvKN3Wn5EmY?p=preview

myApp.factory(''$exceptionHandler'',function($injector){ return function(exception, cause){ var rScope = $injector.get(''$rootScope''); if(rScope){ rScope.$broadcast(''exception'',exception, cause); } }; })

Actualización: añadir técnica .provider también:

app.provider(''$exceptionHandler'', function() { // In the provider function, you cannot inject any // service or factory. This can only be done at the // "$get" method. this.$get = function($injector) { return function(exception,cause){ var rScope = $injector.get(''$rootScope''); rScope.$broadcast(''exception'',exception, cause); } }; });