How to filter JSON-Data with AngularJs?
86,490
Solution 1
Since your object model is kind of complex I would recommend using custom filtering function:
$scope.isActive = function(user) {
return user.User.Stats[0].active === "1";
};
and then in your HTML:
<div ng-repeat="user in _users | filter:isActive">
{{user.User.userid}}
</div>
Here is the working jsFiddle: http://jsfiddle.net/pkozlowski_opensource/4kzzy/3/
Be sure to check angular's documentation on filters if you need more info: http://docs.angularjs.org/api/ng.filter:filter
Solution 2
Taking @pkozlowski.opensource a bit further and allowing live filtering of items/users:
<div ng-controller="MyCtrl">
<label>userid substring filter:</label>
<input ng-model="zzzzz">
<div ng-repeat="user in _users | filter:isInteresting">
<pre>{{user | json}}</pre>
</div>
</div>
And:
$scope.isInteresting = function (user) {
if ($scope.zzzzz == undefined) {
return true;
}
return user.userid.indexOf($scope.zzzzz) !== -1;
};
Author by
Vural
Updated on July 12, 2022Comments
-
Vural almost 2 years
I have an array (_users) that contains JSON objects.
{ "User": { "userid":"19571", "status":"7", "active":"1", "lastlogin":"1339759025307", "Stats": [ { "active":"1", "catid":"10918", "typeid":"71", "Credits": [ { "content":"917,65", "active":"1", "type":"C7" }, { "content":"125,65", "active":"1", "type":"B2" } ] } ] } }
1- How can I filter only users with "active":"1" not "0"
I have tried something like this:
<div ng-repeat="user in _users | filter:active | orderBy:user.userid"> {{user.userid}} </div>
but not working correctly for me.
Thank you!
-
GFoley83 about 11 yearsAnswer above is perfect but FYI, if you want to filter your array before binding to scope, you can also use jQuery.grep() or the _filter from underscore.js jsfiddle.net/NRuM7/1 - jQuery.Grep() documentcloud.github.com/underscore/#filter - underscore.js