Angular.js: ¿Es posible capturar y registrar en la consola todas las transmisiones?

Creado en 29 ene. 2014  ·  3Comentarios  ·  Fuente: angular/angular.js

Esto es lo que he probado:

$rootScope.$on("$broadcast", function ($event) {
    console.log("BROADCAST: " + $event.name);
});

¿Es esto algo que es (no se pudo encontrar ningún documento para ello) o se implementará alguna vez o la sobrecarga es demasiado grande?

Mi pensamiento se originó en los documentos de eventos de $ route , por ejemplo, $routeChangeSuccess .

Comentario más útil

Esto no es algo que probablemente se implemente nunca, como usted dice, debido a los gastos generales.

Sin embargo, es posible implementar un notificador en su propia aplicación, de modo que pueda crear una forma de notificar su propia aplicación utilizando decoradores.

app.config(function($provide) {
  $provide.decorator("$rootScope", function($delegate) {
    var Scope = $delegate.constructor;
    var origBroadcast = Scope.prototype.$broadcast;
    var origEmit = Scope.prototype.$emit;

    Scope.prototype.$broadcast = function() {
      console.log("$broadcast was called on $scope " + $scope.$id + " with arguments:",
                         arguments);
      return origBroadcast.apply(this, arguments);
    };
    Scope.prototype.$emit = function() {
      console.log("$emit was called on $scope " + $scope.$id + " with arguments:",
                         arguments);
      return origEmit.apply(this, arguments);
    };
    return $delegate;
  });
});

Aquí hay un ejemplo rápido: http://plnkr.co/edit/cn3MZynbpTYIcKUWmsBi?p=preview

Todos 3 comentarios

Esto no es algo que probablemente se implemente nunca, como usted dice, debido a los gastos generales.

Sin embargo, es posible implementar un notificador en su propia aplicación, de modo que pueda crear una forma de notificar su propia aplicación utilizando decoradores.

app.config(function($provide) {
  $provide.decorator("$rootScope", function($delegate) {
    var Scope = $delegate.constructor;
    var origBroadcast = Scope.prototype.$broadcast;
    var origEmit = Scope.prototype.$emit;

    Scope.prototype.$broadcast = function() {
      console.log("$broadcast was called on $scope " + $scope.$id + " with arguments:",
                         arguments);
      return origBroadcast.apply(this, arguments);
    };
    Scope.prototype.$emit = function() {
      console.log("$emit was called on $scope " + $scope.$id + " with arguments:",
                         arguments);
      return origEmit.apply(this, arguments);
    };
    return $delegate;
  });
});

Aquí hay un ejemplo rápido: http://plnkr.co/edit/cn3MZynbpTYIcKUWmsBi?p=preview

En el futuro, considere preguntar a la lista de correo , al canal de IRC o al stackoverflow antes de publicar un problema, sin embargo, esto está destinado principalmente para el seguimiento de errores.

Wow genial. Gracias Caitlin.

Además, señaló; mi error

El miércoles 29 de enero de 2014, Caitlin Potter [email protected]
escribió:

En el futuro, considere preguntar a la lista de correo https://groups.google.com/forum/#! Forum / angular ,
Canal de IRC http://webchat.freenode.net/?channels=angularjs o
stackoverflow http://stackoverflow.com/questions/tagged/angularjs antes de publicar un problema, sin embargo --- esto está destinado principalmente a un error
seguimiento.

-
Responda a este correo electrónico directamente o véalo en Gi
.

¿Fue útil esta página
0 / 5 - 0 calificaciones