janbaer
4/15/2015 - 9:38 AM

Count the number of Angular watches

Count the number of Angular watches

(function () {
    var root = angular.element(document.getElementsByTagName('body'));
 
    var watchers = [];
 
    var f = function (element) {
        angular.forEach(['$scope', '$isolateScope'], function (scopeProperty) {
            if (element.data() && element.data().hasOwnProperty(scopeProperty)) {
                angular.forEach(element.data()[scopeProperty].$$watchers, function (watcher) {
                    watchers.push(watcher);
                });
            }
        });
 
        angular.forEach(element.children(), function (childElement) {
            f(angular.element(childElement));
        });
    };
 
    f(root);
 
    // Remove duplicate watchers
    var watchersWithoutDuplicates = [];
    angular.forEach(watchers, function(item) {
        if(watchersWithoutDuplicates.indexOf(item) < 0) {
             watchersWithoutDuplicates.push(item);
        }
    });
 
    console.log(watchersWithoutDuplicates.length);
})();