Sử dụng lại Bộ lọc Angular.js - Xem / Trình điều khiển
Giải pháp này bao gồm việc tái sử dụng Bộ lọc góc. Đó là một cách khác để lọc dữ liệu và Google đã đưa tôi đến đây khi tôi cần; và tôi muốn chia sẻ.
Ca sử dụng
Nếu bạn đã lọc, hãy nói lặp lại trong chế độ xem của bạn (như bên dưới), thì bạn có thể đã xác định bộ lọc trong bộ điều khiển như sau. Và sau đó bạn có thể sử dụng lại như trong các ví dụ cuối cùng.
Ví dụ sử dụng bộ lọc - Lặp lại được lọc trong Chế độ xem
<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>
Ví dụ về định nghĩa bộ lọc góc
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 };
})
Vì vậy, khái niệm ở đây là bạn đã sử dụng bộ lọc được tạo cho chế độ xem của mình và sau đó nhận ra rằng bạn cũng muốn sử dụng nó trong bộ điều khiển của mình.
Chức năng lọc Sử dụng trong bộ điều khiển Ví dụ 1
var dup = $filter('filter')($scope.people, $scope.searchDuplicate, true)
Chức năng lọc Sử dụng trong bộ điều khiển Ví dụ 2
Chỉ hiển thị Nút nếu không tìm thấy trùng lặp, sử dụng bộ lọc trước.
Nút Html
<div ng-if="showButton()"><button class="btn btn-primary" ng-click="doSomething();"></button></div>
Nút Hiển thị / Ẩn
$scope.doSomething = function(){ /* ... */ };
$scope.showButton = function(){ return $filter('filter')($scope.people, $scope.searchDuplicate, true).length == 0; };
Một số có thể tìm thấy phiên bản lọc này dễ dàng và đó là một tùy chọn Angular.js.
Tham số so sánh tùy chọn "true" được sử dụng trong dạng xem và trong lệnh gọi hàm lọc $ chỉ định bạn muốn so sánh chặt chẽ. Nếu bạn bỏ qua, các giá trị có thể được tìm kiếm trên nhiều cột.
https://docs.angularjs.org/api/ng/filter/filter