Mam obiekt użytkowników podobny do poniższego:
$scope.users = [
{
name : "John Doe",
attached_groups = [
{1:object},
{2:object}
]
},
{
name : "Bob Doe",
attached_groups = [
{3:object},
{4:object}
]
}
];
W moim HTML mam następującą grupę do wyboru.
<select id="group_filter">
<option value="1">Group 1</option>
<option value="2">Group 2</option>
<option value="3">Group 3</option>
<option value="4">Group 4</option>
</select>
Chciałbym dodać filtr do mojego powtórzenia ng do filtrowania w grupach. Mam następujące powtórzenie ng.
<tr ng-repeat="user in users| filter:query>
Każda pomoc będzie doceniona.
Odpowiedzi:
2 dla odpowiedzi № 1Cóż, nie zmieniłem struktury $ scope.users, ale potrzebujesz przeglądu, ponieważ nie uważam, że to najlepszy sposób.
Ważne tutaj:
http://codepen.io/luarmr/pen/YXVqqp
ng-repeat="user in users | filter:search"
i musisz zdefiniować filtr wyszukiwania:
$scope.search = function(user) {
if ($scope.filter === undefined ) {
return true;
}
var match = false;
angular.forEach(user.attached_groups, function(group) {
if (group.hasOwnProperty($scope.filter)) {
match = true;
}
});
return match;
};
filtr może być łatwiejszy, jeśli zmienisz attach_groups. Możesz zobaczyć przykład tutaj: https://docs.angularjs.org/api/ng/filter/filter
1 dla odpowiedzi nr 2
utwórz wpis typu tekstowego i ng-model="query"
.
<input type="text" ng-model="query">
to zostanie następnie przefiltrowane:
<tr ng-repeat="x in users | filter:query">...</tr>