Reusing An Angular.js Filter - View / Controller
Solusi ini mencakup penggunaan kembali Filter Sudut. Yang merupakan cara lain untuk memfilter data, dan Google mendaratkan saya di sini ketika saya membutuhkannya; dan saya suka berbagi.
Gunakan Kasing
Jika Anda sudah memfilter, ucapkan dalam ng-repeat dalam tampilan Anda (seperti di bawah ini), maka Anda mungkin telah menetapkan filter dalam controller sebagai berikut. Dan kemudian Anda dapat menggunakan kembali seperti pada contoh terakhir.
Contoh Penggunaan Filter - Filtered Repeat in View
<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>
Contoh Definisi Filter Sudut
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 };
})
Jadi, konsepnya di sini adalah bahwa Anda sudah menggunakan filter yang dibuat untuk tampilan Anda, dan kemudian menyadari bahwa Anda juga ingin menggunakannya dalam controller Anda.
Penggunaan Fungsi Filter Di Dalam Kontroler Contoh 1
var dup = $filter('filter')($scope.people, $scope.searchDuplicate, true)
Fungsi Filter Gunakan Dalam Contoh Kontroler 2
Tampilkan Tombol hanya jika tidak ada duplikat ditemukan, menggunakan filter sebelumnya.
Tombol Html
<div ng-if="showButton()"><button class="btn btn-primary" ng-click="doSomething();"></button></div>
Tampilkan / Sembunyikan Tombol
$scope.doSomething = function(){ /* ... */ };
$scope.showButton = function(){ return $filter('filter')($scope.people, $scope.searchDuplicate, true).length == 0; };
Beberapa orang mungkin menemukan versi penyaringan ini mudah, dan ini merupakan opsi Angular.js.
Parameter pembanding opsional "benar" yang digunakan dalam tampilan dan dalam panggilan fungsi $ filter menentukan Anda menginginkan perbandingan yang ketat. Jika Anda menghilangkan, nilai dapat dicari lebih dari beberapa kolom.
https://docs.angularjs.org/api/ng/filter/filter