I have a small angular app like so:
html
<body ng-app>
<div ng-controller="Ctrl">
<div ng-repeat="user in users | filter:1">
<span>{{ user.username }}, {{ user.id }}</span>
</div>
</div>
</body>
app.js
function Ctrl($scope) {
$scope.users = [
{"id":1,"username":"simon",},
{"id":8,"username":"betty",},
{"id":14,"username":"archie",},
{"id":3,"username":"jumbo1"},
]
}
output
simon, 1
archie, 14
jumbo1, 3
What I want to do is filter an exact match for filter argument AND filter on the id field ONLY.
Basically, I want the output to be:
output
simon, 1
I am using Angular 1.2.
Based on
https://docs.angularjs.org/api/ng/filter/filter
Filter on the Template:
Filter on the Controller (with $param)
Check if this can help
Specify the key (property) of object in filter, on which you want to apply filter:
But you want to apply filter only on firstname
In Angular 1.1.3 or newer you can use the following:
{'id': 1}
says to only compare with the fieldid
. That gets you::true
says "exact match" resulting in:Here's that working: http://jsfiddle.net/AM95H/
To filter against a list of values, if you have the list in a scope variable, I'd add a custom filter to your JS file:
Used like this:
To filter against a parameter list we'll create our own filter. In this case we'll get called once with all the input values to test rather than once per value.
So the first parameter we'll receive is the array of input values (users in your case) and the second parameter will be the parameter we pass in ([1,8]). We'll then create an output array and add (push) any items in the input stream that match one of the
filterValues
. And return the output array.And use it like this:
Here's an example of this: http://jsfiddle.net/AM95H/2/