Angular.js: Apakah mungkin untuk menangkap dan konsol log semua siaran?

Dibuat pada 29 Jan 2014  ·  3Komentar  ·  Sumber: angular/angular.js

Inilah yang saya coba:

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

Apakah ini sesuatu yang (tidak dapat menemukan dokumen apa pun untuk itu) atau akan pernah diterapkan atau apakah overhead terlalu besar?

Pemikiran saya berasal dari $route event docs, misalnya $routeChangeSuccess .

Komentar yang paling membantu

Ini bukan sesuatu yang mungkin akan pernah diimplementasikan, seperti yang Anda katakan, karena overhead.

Namun, dimungkinkan untuk menerapkan pemberi tahu di aplikasi Anda sendiri, sehingga Anda dapat membuat cara untuk memberi tahu aplikasi Anda sendiri menggunakan dekorator.

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

Berikut ini contoh singkatnya :

Semua 3 komentar

Ini bukan sesuatu yang mungkin akan pernah diimplementasikan, seperti yang Anda katakan, karena overhead.

Namun, dimungkinkan untuk menerapkan pemberi tahu di aplikasi Anda sendiri, sehingga Anda dapat membuat cara untuk memberi tahu aplikasi Anda sendiri menggunakan dekorator.

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

Berikut ini contoh singkatnya :

Di masa mendatang, harap pertimbangkan untuk menanyakan milis , saluran IRC , atau stackoverflow sebelum memposting masalah, namun --- ini terutama dimaksudkan untuk pelacakan bug.

Wow bagus. Terima kasih Caitlin.

Juga, dicatat; kesalahanku

Pada Rabu, Januari 29, 2014, Caitlin Potter [email protected]
menulis:

Di masa mendatang, harap pertimbangkan untuk bertanya ke milishttps://groups.google.com/forum/#!forum/angular ,
Saluran IRC http://webchat.freenode.net/?channels=angularjs atau
stackoverflow http://stackoverflow.com/questions/tagged/angularjssebelum memposting masalah, bagaimanapun --- ini terutama dimaksudkan untuk bug
pelacakan.


Balas email ini secara langsung atau lihat di Gi tHubhttps://github.com/angular/angular.js/issues/6043#issuecomment -33610626
.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat