Angular.js: É possível capturar e registrar no console todas as transmissões?

Criado em 29 jan. 2014  ·  3Comentários  ·  Fonte: angular/angular.js

Isso é o que eu tentei:

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

Isso é algo que é (não foi possível encontrar nenhum documento para isso) ou será implementado ou a sobrecarga é muito grande?

Meu pensamento originou-se dos documentos de evento $ route , por exemplo, $routeChangeSuccess .

Comentários muito úteis

Isso não é algo que provavelmente será implementado, como você diz, devido à sobrecarga.

No entanto, é possível implementar um notificador em seu próprio aplicativo, para que você possa criar uma maneira de notificar seu próprio aplicativo usando 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;
  });
});

Aqui está um exemplo rápido: http://plnkr.co/edit/cn3MZynbpTYIcKUWmsBi?p=preview

Todos 3 comentários

Isso não é algo que provavelmente será implementado, como você diz, devido à sobrecarga.

No entanto, é possível implementar um notificador em seu próprio aplicativo, para que você possa criar uma maneira de notificar seu próprio aplicativo usando 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;
  });
});

Aqui está um exemplo rápido: http://plnkr.co/edit/cn3MZynbpTYIcKUWmsBi?p=preview

No futuro, por favor, considere pedir a lista de discussão , canal IRC ou stackoverflow antes de postar um problema, entretanto --- isto é principalmente para rastreamento de bugs.

Uau, legal. Obrigado Caitlin.

Além disso, observou; meu erro

Na quarta-feira, 29 de janeiro de 2014, Caitlin Potter [email protected]
escreveu:

No futuro, considere pedir a lista de e-mailshttps: //groups.google.com/forum/#! Forum / angular ,
Canal IRC http://webchat.freenode.net/?channels=angularjs ou
stackoverflow http://stackoverflow.com/questions/tagged/angularjsbe before postar um problema, no entanto --- isso se destina principalmente a bug
rastreamento.

-
Responda diretamente a este e-mail ou visualize-o em Gi tHubhttps: //github.com/angular/angular.js/issues/6043#issuecomment -33610626
.

Esta página foi útil?
0 / 5 - 0 avaliações