Angular.js: すべてのブロードキャストをキャプチャしてコンソールログに記録することは可能ですか?

作成日 2014年01月29日  ·  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

全てのコメント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

将来的には、問題を投稿する前に、メーリングリストIRCチャネル、またはstackoverflowに問い合わせることを検討してください。ただし、これは主にバグ追跡を目的としています。

素敵な。 ケイトリンに感謝します。

また、注意してください。 私の間違い

水曜日、2014年1月29日、ケイトリン・ポッター[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 評価