Se c'è un modo in ui-grid che posso sapere che una griglia è finita di aggiornare le righe? (Come un filtro viene applicato, ecc)? Voglio eseguire alcune funzioni dopo che la vista della griglia è cambiata.Come ricevere una notifica quando la griglia è cambiata nella griglia utente AngularJS?
ho provato il seguente metodo:
$scope.filteredRows = $scope.gridApi.core.getVisibleRows($scope.gridApi.grid);
$scope.$watch('filteredRows', function(){console.log('view updated');});
L'approccio di cui sopra funziona quando la griglia appena finito l'avvio, dopo di che, non funzionerà più.
Ho anche provato usando l'filterChanged
api:
$scope.gridApi.core.on.filterChanged($scope, function() {
console.log('filter changed');
foo();
});
Il problema di questo metodo è che anche se posso essere avvisato quando il filtro viene cambiato, ma se la rete è molto grande, ha bisogno del tempo per terminare l'aggiornamento della vista e, prima, la funzione foo()
viene chiamata prima che l'aggiornamento della griglia sia terminato.
Qualsiasi idea sarà apprezzata.
Aggiornato in una modifica per mostrare come usarlo – PaulL
Grazie @PauL, che funziona! Una domanda successiva, come lasciare che myFunction() venga eseguito solo quando viene immesso un testo di filtro E il rendering della griglia è completato. Ora myFunction() verrà eseguito ogni volta che la griglia cambierà, come nel raggruppamento, espandere e comprimere la griglia e anche attivare myFunction(). Grazie ancora per il tuo tempo. – Tony
Puoi anche ascoltare filterChanged, e potresti impostare un flag + un timeout che disattiverà quel flag. Quindi puoi controllare quel flag in rowsRendered. In alternativa, potresti non preoccuparti e lasciare che la tua funzione venga eseguita ogni volta che vengono emesse le righeRendered. – PaulL