How to use a filter in javascript instead of the Html
AngularjsAngularjs Problem Overview
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.
Angularjs Solutions
Solution 1 - Angularjs
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)
.
Solution 2 - Angularjs
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 https://stackoverflow.com/q/14302267/1418796
Solution 3 - Angularjs
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);
});