I have in angular nested object like this. is there way how to filter it for nested property
<li ng-repeat="shop in shops | filter:search">
search.locations.city_id = 22
I'm showing only parent element but want to filter by both of it, like:
search =
category_id: 2
locations:
city_id: 368
[
name: "xxx"
category_id: 1
locations: [
city_id: 368
region_id: 4
,
city_id: 368
region_id: 4
,
city_id: 368
region_id: 4
]
,
name: "xxx"
category_id: 2
locations: [
city_id: 30
region_id: 4
,
city_id: 22
region_id: 2
]
]
You also can filter like this (version 1.2.13+)
<li ng-repeat="shop in shops | filter: { locations: [{ city_id: search.locations.city_id }] }">
Yes, you can, if I understood your example properly.
Depending on the size of your collection it may be better to compute the collection you iterate over in ng-repeat
so that the filter isn't doing it constantly as the model changes.
http://jsfiddle.net/suCWn/
Basically you do something like this, if I understood you correctly:
$scope.search = function (shop) {
if ($scope.selectedCityId === undefined || $scope.selectedCityId.length === 0) {
return true;
}
var found = false;
angular.forEach(shop.locations, function (location) {
if (location.city_id === parseInt($scope.selectedCityId)) {
found = true;
}
});
return found;
};
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With