Réutilisation d'un filtre Angular.js - Vue / Contrôleur
Cette solution couvre la réutilisation des filtres angulaires. Ce qui est encore une autre façon de filtrer les données, et Google m'a atterri ici quand j'en avais besoin; et j'aime partager.
Cas d'utilisation
Si vous filtrez déjà, disons dans une répétition ng dans votre vue (comme ci-dessous), alors vous pourriez avoir défini un filtre dans le contrôleur comme suit. Et puis vous pouvez réutiliser comme dans les exemples finaux.
Exemple d'utilisation du filtre - Répétition filtrée dans la vue
<div ng-app="someApp" ng-controller="someController">
<h2>Duplicates</h2>
<table class="table table-striped table-light table-bordered-light">
<thead>
<tr>
<th>Name</th>
<th>Gender</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="person in data | filter: searchDuplicate:true">
<td>{{person.name}}</td>
<td>{{person.gender}}</td>
</tr>
</tbody>
</table>
</div>
Exemple de définition de filtre angulaire
angular.module('someApp',[])
.controller('someController', function($scope, $filter ) {
$scope.people = [{name: 'Bob', gender: 'male' , hasDuplicate: true },
{name: 'Bob', gender: 'male' , hasDuplicate: true },
{name: 'Bob', gender: 'female', hasDuplicate: false}];
$scope.searchDuplicate = { hasDuplicate : true };
})
Ainsi, le concept ici est que vous utilisez déjà un filtre créé pour votre vue, puis réalisez que vous souhaitez également l'utiliser dans votre contrôleur.
Utilisation de la fonction de filtre dans le contrôleur Exemple 1
var dup = $filter('filter')($scope.people, $scope.searchDuplicate, true)
Utilisation de la fonction de filtre dans le contrôleur Exemple 2
Afficher un bouton uniquement si aucun doublon n'est trouvé, en utilisant le filtre précédent.
Bouton HTML
<div ng-if="showButton()"><button class="btn btn-primary" ng-click="doSomething();"></button></div>
Bouton Afficher / Masquer
$scope.doSomething = function(){ /* ... */ };
$scope.showButton = function(){ return $filter('filter')($scope.people, $scope.searchDuplicate, true).length == 0; };
Certains peuvent trouver cette version de filtrage facile, et c'est une option Angular.js.
Le paramètre de comparaison facultatif "true" utilisé dans la vue et dans l'appel de fonction $ filter spécifie que vous voulez une comparaison stricte. Si vous omettez, les valeurs peuvent être recherchées sur plusieurs colonnes.
https://docs.angularjs.org/api/ng/filter/filter