Angular.js: Можно ли записывать и записывать в журнал все трансляции?

Созданный на 29 янв. 2014  ·  3Комментарии  ·  Источник: angular/angular.js

Вот что я пробовал:

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

Это что-то, что есть (не удалось найти для этого никаких документов) или будет когда-либо реализовано, или накладные расходы слишком велики?

Мои мысли исходили из документов о событиях $ route , например, $routeChangeSuccess .

Самый полезный комментарий

Это не то, что, вероятно, когда-либо будет реализовано, как вы говорите, из-за накладных расходов.

Однако можно реализовать средство уведомления в собственном приложении, чтобы вы могли создать способ уведомления своего собственного приложения с помощью декораторов.

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

Вот краткий пример: http://plnkr.co/edit/cn3MZynbpTYIcKUWmsBi?p=preview

Все 3 Комментарий

Это не то, что, вероятно, когда-либо будет реализовано, как вы говорите, из-за накладных расходов.

Однако можно реализовать средство уведомления в собственном приложении, чтобы вы могли создать способ уведомления своего собственного приложения с помощью декораторов.

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

Вот краткий пример: http://plnkr.co/edit/cn3MZynbpTYIcKUWmsBi?p=preview

В будущем, пожалуйста, подумайте о том, чтобы спросить список рассылки , канал IRC или stackoverflow, прежде чем публиковать проблему, однако --- это в первую очередь предназначено для отслеживания ошибок.

Вау круто. Спасибо, Кейтлин.

Также отметил; моя ошибка

В среду, 29 января 2014 года, Кейтлин Поттер [email protected]
написал:

В будущем, пожалуйста, подумайте о том, чтобы спросить список рассылкиhttps : //groups.google.com/forum/#! Forum / angular ,
IRC-канал http://webchat.freenode.net/?channels=angularjs или
stackoverflow http://stackoverflow.com/questions/tagged/angularjsдля публикации проблемы, однако --- это в первую очередь предназначено для ошибки
отслеживание.

-
Ответьте на это письмо напрямую или просмотрите его на Gi tHubhttps: //github.com/angular/angular.js/issues/6043#issuecomment -33610626
.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги