51

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.

2

3 Answers 3

86

It's on Angular's filter documentation:

In HTML Template Binding

{{ filter_expression | filter:expression }}

In JavaScript

$filter('filter')(array, expression)

In your case, it would look something like $filter('filter')(myList, mySearch).

Sign up to request clarification or add additional context in comments.

7 Comments

Thanks, that’s what I thought to do, but I had a problem with $filter being "not defined". I didn't include it.. Now it's included and this is working. Thanks!
What does the string 'filter' do?
Ditto -- what's the purpose of 'filter' in the first link of the Curry-chain?
@Cody $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'.
You can use $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...
|
6

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?

Comments

2

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);
});

1 Comment

Do you know how do exactly that with the Fuzzy code? github.com/a8m/angular-filter#fuzzy

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.