2017-04-07 2 views
0

J'ai le scénario suivant: Je reçois des données pour la grille d'interface utilisateur et l'affiche avec la possibilité de basculer les filtres d'en-tête. Quelque temps plus tard, j'ai besoin de demander à nouveau des données et de pouvoir basculer les filtres. Mon code ne fonctionne que la première fois. Après que je demande à nouveau des données (essentiellement recréer ce que je fais pour configurer initialement la table) le filtre ne fonctionne plus. J'ai créé un plunker qui illustre cela http://plnkr.co/edit/KQbkGZQnjxCFTrS4Elgh?p=preview: cliquez sur le bouton Filtrer - voir les filtres ok. Ensuite, appuyez sur: demande à nouveau des données - le filtre ne fonctionne plus. Mon soupçon est onRegisterApi méthode est appelée qu'une seule fois même si je ne suis pas sûr si c'est tout. Toute aide appréciée.Filtrage de la grille d'interface utilisateur

$scope.toggleFiltering = function(){ 
    $scope.gridOptions.enableFiltering = !$scope.gridOptions.enableFiltering; 
    $scope.gridApi.core.notifyDataChange(uiGridConstants.dataChange.COLUMN); 
    }; 

Répondre

1

Voir si cela fonctionne pour vous. Vous appelez à nouveau $ scope.gridOptions sur $ scope.requestDataAgain et ce n'est pas nécessaire.

$scope.requestDataAgain = function(){ 
$http.get('https://cdn.rawgit.com/angular-ui/ui-grid.info/gh-pages/data/500_complex.json') 
.success(function(data) { 
    $scope.gridOptions.data = data; 
    $scope.gridOptions.data[0].age = -5; 

    data.forEach(function addDates(row, index){ 
    row.mixedDate = new Date(); 
    row.mixedDate.setDate(today.getDate() + (index % 14)); 
    row.gender = row.gender==='male' ? '1' : '2'; 
    }); 

}); 

};

Updated plnkr

2

Vous ne devez pas réinitialiser les gridOptions lorsque demande à nouveau des données. Enlever cela de votre plnkr l'a fixé. Ainsi, votre fonction requestDataAgain ressemblera à ceci:

$scope.requestDataAgain = function(){ 

    $http.get('https://cdn.rawgit.com/angular-ui/ui-grid.info/gh-pages/data/500_complex.json') 
.success(function(data) { 
    $scope.gridOptions.data = data; 
    $scope.gridOptions.data[0].age = -10; 

    data.forEach(function addDates(row, index){ 
    row.mixedDate = new Date(); 
    row.mixedDate.setDate(today.getDate() + (index % 14)); 
    row.gender = row.gender==='male' ? '1' : '2'; 
    }); 

}); 

};

Here est le plnkr mis à jour.