J'ai le code suivant qui répète et affiche le nom de l'utilisateur et son score :
<div ng-controller="AngularCtrl" ng-app>
<div ng-repeat="user in users | orderBy:predicate:reverse | limitTo:10">
<div ng-init="user.score=user.id+1">
{{user.name}} and {{user.score}}
</div>
</div>
</div>
Et le contrôleur angulaire correspondant.
function AngularCtrl($scope) {
$scope.predicate = 'score';
$scope.reverse = true;
$scope.users = [{id: 1, name: 'John'}, {id: 2, name: 'Ken'}, {id: 3, name: 'smith'}, {id: 4, name: 'kevin'}, {id: 5, name: 'bob'}, {id: 6, name: 'Dev'}, {id: 7, name: 'Joe'}, {id: 8, name: 'kevin'}, {id: 9, name: 'John'}, {id: 10, name: 'Ken'}, {id: 11, name: 'John'}, {id: 1, name: 'John'}, {id: 2, name: 'Ken'}, {id: 3, name: 'smith'}, {id: 4, name: 'kevin'}, {id: 5, name: 'bob'}, {id: 6, name: 'Dev'}, {id: 7, name: 'Joe'}, {id: 8, name: 'kevin'}, {id: 9, name: 'John'}, {id: 10, name: 'Ken'}]
}
Lorsque j'exécute le code ci-dessus, j'obtiens le message suivant Erreur : 10 itérations de $digest() atteintes. Abandon ! erreur dans ma console.
J'ai créé jsfiddle pour le même.
Le prédicat de tri n'est initialisé qu'à l'intérieur du ng-repeat et la limite est également appliquée au nombre d'objets. Je pense donc que le fait d'avoir les deux surveillants sortby et limitTo ensemble est la raison de l'erreur.
Si la valeur de $scope.reverse est fausse (ordre ascendant du score), alors il n'y a pas d'erreur.
Quelqu'un peut-il m'aider à comprendre ce qui ne va pas ici ? J'apprécie beaucoup votre aide.
0 votes
Si vous supprimez l'instruction if, l'erreur persiste-t-elle ?
0 votes
Merci pour votre réponse Mathew ! J'ai mal diagnostiqué le problème. Le problème semble concerner les filtres sortby et limitTo. J'ai mis à jour la question avec JSFiddle. J'apprécie beaucoup votre aide.
0 votes
C'est un truc angulaire. Vous devez mémoriser vos fonctions et faire en sorte qu'elles se souviennent de l'état. Regardez ma réponse sur stackoverflow.com/questions/14376879/