De fato, você deve usar diretivas e não há evento vinculado ao final de um loop ng-Repeat (já que cada elemento é construído individualmente e possui seu próprio evento). Mas a) usar diretivas pode ser tudo o que você precisa eb) existem algumas propriedades específicas do ng-Repeat que você pode usar para criar seu evento "no ngRepeat concluído".
Especificamente, se tudo o que você deseja é estilizar / adicionar eventos a toda a tabela, é possível fazê-lo usando uma diretiva que inclua todos os elementos ngRepeat. Por outro lado, se você quiser endereçar cada elemento especificamente, poderá usar uma diretiva dentro do ngRepeat e ela atuará em cada elemento, depois que ele for criado.
Então, há o $index
, $first
, $middle
e $last
propriedades que você pode usar para eventos de disparo. Então, para este HTML:
<div ng-controller="Ctrl" my-main-directive>
<div ng-repeat="thing in things" my-repeat-directive>
thing {{thing}}
</div>
</div>
Você pode usar diretivas assim:
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');
};
});
Veja em ação neste Plunker . Espero que ajude!
myMainDirective
o código seja executado somente após o final do loop? Preciso atualizar a barra de rolagem da div pai.