I'm using AngularJS and it's great. I can't find it in the Documentation - What is the equivalent in Javascript to this AngularJS expression:
<div>{{ (myList| filter:mySearch).length }}</div>
Thanks for the help.
I'm using AngularJS and it's great. I can't find it in the Documentation - What is the equivalent in Javascript to this AngularJS expression:
<div>{{ (myList| filter:mySearch).length }}</div>
Thanks for the help.
It's on Angular's filter documentation:
{{ filter_expression | filter:expression }}
$filter('filter')(array, expression)
In your case, it would look something like $filter('filter')(myList, mySearch).
'filter' in the first link of the Curry-chain?$filter('filter') returns the filter function, where 'filter' refers to the name of the filter you want. In this case, since it is a generic filter, Angular team simply decided to named it 'filter'.$filter to use AngularJS filter function on arrays from within your javascript code. Say you want to sort an array of objects on a property sum. You could do that like this: $filter('orderBy')(myArr, "sum", false) - which is the same as doing it in a ng-repeatlike this: ng-repeat="t in myArr | orderBy:'sum':false". So if somewhere in your code you need to get a version of your array sorted as in the ng-repeat this is handy. Please remember that it will only work on a scope. I use to store my $scope in a global $gs. Makes testing easier: $gs.$filter...As an alternative syntax you can also inject a filter directly, without going through the $filter service. For example to inject filter filter to your controller you could write:
MyCtrl = function($scope, filterFilter) {
$scope.filtered = filterFilter(myArray, expression);
}
A question very similar to How to use a filter in a controller?
In your html
<input ng-model="search">
<div ng-repeat="thing in things | filter:searchResults"></div>
In your JS
$scope.$watch('search', function (newValue, oldValue) {
var searchResults = filterFilter($scope.things, $scope.search);
});