Angular.js: Est-il possible de capturer et de consoler toutes les diffusions ?

Créé le 29 janv. 2014  ·  3Commentaires  ·  Source: angular/angular.js

Voilà ce que j'ai essayé :

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

Est-ce quelque chose qui est (je n'ai pas pu trouver de documents pour cela) ou qui sera jamais mis en œuvre ou la surcharge est-elle trop importante ?

Ma réflexion est venue de la documentation sur l'événement $route , par exemple $routeChangeSuccess .

Commentaire le plus utile

Ce n'est pas quelque chose qui sera probablement jamais mis en œuvre, comme vous le dites, en raison des frais généraux.

Cependant, il est possible d'implémenter un notificateur dans votre propre application, afin que vous puissiez créer un moyen de notifier votre propre application à l'aide de décorateurs.

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;
  });
});

Voici un exemple rapide : http://plnkr.co/edit/cn3MZynbpTYIcKUWmsBi?p=preview

Tous les 3 commentaires

Ce n'est pas quelque chose qui sera probablement jamais mis en œuvre, comme vous le dites, en raison des frais généraux.

Cependant, il est possible d'implémenter un notificateur dans votre propre application, afin que vous puissiez créer un moyen de notifier votre propre application à l'aide de décorateurs.

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;
  });
});

Voici un exemple rapide : http://plnkr.co/edit/cn3MZynbpTYIcKUWmsBi?p=preview

À l'avenir, veuillez envisager de demander à la liste de diffusion , au canal IRC ou au stackoverflow avant de poster un problème, cependant --- ceci est principalement destiné au suivi des bogues.

Waouh, sympa. Merci Caitlin.

Aussi, noté; mon erreur

Le mercredi 29 janvier 2014, Caitlin Potter [email protected]
a écrit:

À l'avenir, veuillez envisager de demander à la liste de diffusionhttps ://groups.google.com/forum/#!forum/angular ,
Canal IRC http://webchat.freenode.net/?channels=angularjs ou
stackoverflow http://stackoverflow.com/questions/tagged/angularjs avant de publier un problème, cependant --- ceci est principalement destiné au bogue
suivi.

-
Répondez directement à cet e-mail ou consultez-le sur Gi tHubhttps://github.com/angular/angular.js/issues/6043#issuecomment -33610626
.

Cette page vous a été utile?
0 / 5 - 0 notes