En effet, vous devez utiliser des directives, et il n'y a aucun événement lié à la fin d'une boucle ng-Repeat (car chaque élément est construit individuellement et a son propre événement). Mais a) l'utilisation de directives peut être tout ce dont vous avez besoin et b) il existe quelques propriétés spécifiques à ng-Repeat que vous pouvez utiliser pour rendre votre événement "on ngRepeat terminé".
Plus précisément, si tout ce que vous voulez est de styliser / ajouter des événements à l'ensemble du tableau, vous pouvez le faire en utilisant une directive qui englobe tous les éléments ngRepeat. D'un autre côté, si vous souhaitez traiter spécifiquement chaque élément, vous pouvez utiliser une directive dans le ngRepeat, et elle agira sur chaque élément, après sa création.
Ensuite, il y a les $index
, $first
, $middle
et les $last
propriétés que vous pouvez utiliser à des événements de déclenchement. Donc pour ce HTML:
<div ng-controller="Ctrl" my-main-directive>
<div ng-repeat="thing in things" my-repeat-directive>
thing {{thing}}
</div>
</div>
Vous pouvez utiliser des directives comme ceci:
angular.module('myApp', [])
.directive('myRepeatDirective', function() {
return function(scope, element, attrs) {
angular.element(element).css('color','blue');
if (scope.$last){
window.alert("im the last!");
}
};
})
.directive('myMainDirective', function() {
return function(scope, element, attrs) {
angular.element(element).css('border','5px solid red');
};
});
Voyez-le en action dans ce Plunker . J'espère que ça aide!
myMainDirective
exécuter le code de seulement après la fin de la boucle? J'ai besoin de mettre à jour la barre de défilement de la division parent.