Ponowne użycie filtra Angular.js - Widok / Kontroler
To rozwiązanie obejmuje ponowne użycie filtrów kątowych. Co jest kolejnym sposobem filtrowania danych, a Google wylądował tutaj, gdy tego potrzebowałem; i lubię się dzielić.
Przypadek użycia
Jeśli już filtrujesz, powiedzmy w swoim powtórzeniu ng (jak poniżej), być może zdefiniowałeś filtr w kontrolerze w następujący sposób. Następnie możesz użyć ponownie, jak w końcowych przykładach.
Przykład użycia filtru - filtrowane powtórzenie w widoku
<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>
Przykład definicji filtra kątowego
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 };
})
Tak więc tutaj koncepcja polega na tym, że już używasz filtra utworzonego dla twojego widoku, a następnie zdajesz sobie sprawę, że chcesz go również użyć w kontrolerze.
Funkcja filtra Zastosowanie w kontrolerze Przykład 1
var dup = $filter('filter')($scope.people, $scope.searchDuplicate, true)
Funkcja filtra Zastosowanie w kontrolerze Przykład 2
Pokaż przycisk tylko wtedy, gdy nie znaleziono duplikatów, używając wcześniejszego filtra.
Przycisk HTML
<div ng-if="showButton()"><button class="btn btn-primary" ng-click="doSomething();"></button></div>
Pokaż / ukryj przycisk
$scope.doSomething = function(){ /* ... */ };
$scope.showButton = function(){ return $filter('filter')($scope.people, $scope.searchDuplicate, true).length == 0; };
Niektórzy mogą uznać tę wersję filtrowania za łatwą i jest to opcja Angular.js.
Opcjonalny parametr komparatora „true” użyty w widoku i wywołaniu funkcji $ filter określa, że chcesz mieć ścisłe porównanie. W przypadku pominięcia wartości można wyszukiwać w wielu kolumnach.
https://docs.angularjs.org/api/ng/filter/filter