Existe-t-il un moyen, en JavaScript, de compter le nombre de montres angulaires sur l'ensemble de la page ?
Nous utilisons Batarang mais elle ne répond pas toujours à nos besoins. Notre application est grande et nous souhaitons utiliser des tests automatisés pour vérifier si le nombre de montres augmente trop.
Il serait également utile de compter les montres sur une base par contrôleur.
Modifier Voici ma tentative. Il compte les montres dans tout ce qui a la classe ng-scope.
(function () {
var elts = document.getElementsByClassName('ng-scope');
var watches = [];
var visited_ids = {};
for (var i=0; i < elts.length; i++) {
var scope = angular.element(elts[i]).scope();
if (scope.$id in visited_ids)
continue;
visited_ids[scope.$id] = true;
watches.push.apply(watches, scope.$$watchers);
}
return watches.length;
})();
0 votes
Par contrôleur, c'est facile. Chaque
$scope
a un tableau $$watchers avec le nombre de surveillants sur ce contrôleur (bien, si vous avez un ng-repeat ou quelque chose qui crée une autre portée, cela ne fonctionne pas si bien). Mais je pense qu'il n'y a aucun moyen de voir tous les observateurs dans l'application entière.