(আপনি পরিবর্তন করার প্রয়োজন হতে পারে bodyকরতে htmlবা যেখানেই আপনি আপনার করা ng-app)
(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);
})();
এই উত্তরটি চিহ্নিত করার জন্য এরিলেমের জন্য ধন্যবাদ $isolateScopeঅনুসন্ধানটি অনুপস্থিত এবং পর্যবেক্ষকরা সম্ভবত তার উত্তর / মন্তব্যে নকল হচ্ছেন।
বেন 2307 ধন্যবাদ আপনাকে উল্লেখ করার জন্য যে এর 'body'পরিবর্তনের প্রয়োজন হতে পারে to
মূল
আমি এইচটিএমএল উপাদানটির ডেটা অ্যাট্রিবিউটটি তার শ্রেণীর পরিবর্তে পরীক্ষা না করেই একই কাজ করেছি। আমি তোমার এখানে দৌড়েছি:
http://fluid.ie/
আমি পেয়েছি এবং আমি পেয়েছি 121।
(function () {
var root = $(document.getElementsByTagName('body'));
var watchers = [];
var f = function (element) {
if (element.data().hasOwnProperty('$scope')) {
angular.forEach(element.data().$scope.$$watchers, function (watcher) {
watchers.push(watcher);
});
}
angular.forEach(element.children(), function (childElement) {
f($(childElement));
});
};
f(root);
console.log(watchers.length);
})();
আমি এটি আমার মধ্যেও রেখেছি:
for (var i = 0; i < watchers.length; i++) {
for (var j = 0; j < watchers.length; j++) {
if (i !== j && watchers[i] === watchers[j]) {
console.log('here');
}
}
}
এবং কিছুই মুদ্রিত হয়নি, সুতরাং আমি অনুমান করছি যে খনিটি ভাল (এটিতে আরও ঘড়িগুলি পাওয়া গেছে) - তবে খনিটি সমাধানের সেটটির উপযুক্ত উপসেট নয় তা নিশ্চিতভাবে জানতে আমার অন্তরঙ্গ কৌণিক জ্ঞানের অভাব রয়েছে।
$scopeসেই নিয়ামকের উপরে নজরদারি সংখ্যার সাথে একটি $$ প্রহরীদের অ্যারে থাকে (ভাল, আপনার যদি কিছু এনজি-রিপিট থাকে বা এমন কিছু থাকে যা অন্য সুযোগ তৈরি করে, তবে এটি ভাল কাজ করে না)। তবে আমি মনে করি পুরো অ্যাপটিতে সমস্ত ঘড়ি দেখার কোনও উপায় নেই।