Angular.js Filtresini Yeniden Kullanma - Görüntüle / Denetleyici
Bu Çözüm Açısal Filtrelerin tekrar kullanılmasını kapsamaktadır. Bu da verileri filtrelemenin başka bir yoludur ve Google, ihtiyaç duyduğumda beni buraya indirdi; ve paylaşmayı seviyorum.
Kullanım Durumu
Zaten filtreliyorsanız, görünümünüzde bir tekrarlayın (aşağıdaki gibi), daha sonra aşağıdaki gibi denetleyicide bir filtre tanımlamış olabilirsiniz. Ve son örneklerde olduğu gibi tekrar kullanabilirsiniz.
Filtre Kullanım Örneği - Görünümde Filtrelenen Tekrar
<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>
Açısal Filtre Tanım Örneği
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 };
})
Yani, buradaki kavram, zaten görünümünüz için oluşturulan bir filtre kullandığınız ve daha sonra da kontrol cihazınızda kullanmak istediğinizi fark ettiğinizdir.
Filtre Fonksiyonu Kontrolör İçinde Kullanım Örnek 1
var dup = $filter('filter')($scope.people, $scope.searchDuplicate, true)
Filtre İşlevi Denetleyici İçinde Kullanım Örnek 2
Bir Düğmeyi yalnızca önceki filtreyi kullanarak herhangi bir kopya bulunmazsa gösterin.
Html Düğmesi
<div ng-if="showButton()"><button class="btn btn-primary" ng-click="doSomething();"></button></div>
Göster / Gizle Düğmesi
$scope.doSomething = function(){ /* ... */ };
$scope.showButton = function(){ return $filter('filter')($scope.people, $scope.searchDuplicate, true).length == 0; };
Bazıları filtrelemenin bu sürümünü kolay bulabilir ve bu bir Angular.js seçeneğidir.
Görünümde ve $ filter işlev çağrısında kullanılan isteğe bağlı karşılaştırıcı parametresi "true", katı bir karşılaştırma istediğinizi belirtir. Atlarsanız, değerler birden çok sütun üzerinde aranabilir.
https://docs.angularjs.org/api/ng/filter/filter