Angular.js: هل من الممكن التقاط كافة عمليات البث وتسجيلها؟

تم إنشاؤها على ٢٩ يناير ٢٠١٤  ·  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 أو تدفق المكدس قبل نشر مشكلة ، ولكن - هذا مخصص بشكل أساسي لتتبع الأخطاء.

واو حلو. شكرا كيتلين.

لاحظ أيضا ؛ غلطتي

يوم الأربعاء ، 29 يناير 2014 ، Caitlin Potter [email protected]
كتب:

في المستقبل ، من فضلك ضع في اعتبارك أن تسأل القائمة البريدية : //groups.google.com/forum/#! forum / angular ،
قناة IRC http://webchat.freenode.net/؟channels=angularjs or
stackoverflow http://stackoverflow.com/questions/tagged/angularjsb قبل نشر مشكلة ، ولكن - هذا مخصص بشكل أساسي للخلل
تتبع.

-
قم بالرد على هذه الرسالة الإلكترونية مباشرة أو tHubhttps: //github.com/angular/angular.js/issues/6043#issuecomment -33610626
.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات