angularjs - How do I call an Angular.js filter with multiple arguments?

ID : 10010

viewed : 17

Tags : angularjsangularjs

Top 5 Answer for angularjs - How do I call an Angular.js filter with multiple arguments?

vote vote

93

In templates, you can separate filter arguments by colons.

{{ yourExpression | yourFilter: arg1:arg2:... }} 

From Javascript, you call it as

$filter('yourFilter')(yourExpression, arg1, arg2, ...) 

There is actually an example hidden in the orderBy filter docs.


Example:

Let's say you make a filter that can replace things with regular expressions:

myApp.filter("regexReplace", function() { // register new filter    return function(input, searchRegex, replaceRegex) { // filter arguments      return input.replace(RegExp(searchRegex), replaceRegex); // implementation    }; }); 

Invocation in a template to censor out all digits:

<p>{{ myText | regexReplace: '[0-9]':'X' }}</p> 
vote vote

90

i mentioned in the below where i have mentioned the custom filter also , how to call these filter which is having two parameters

countryApp.filter('reverse', function() {     return function(input, uppercase) {         var out = '';         for (var i = 0; i < input.length; i++) {             out = input.charAt(i) + out;         }         if (uppercase) {             out = out.toUpperCase();         }         return out;     } }); 

and from the html using the template we can call that filter like below

<h1>{{inputString| reverse:true }}</h1> 

here if you see , the first parameter is inputString and second parameter is true which is combined with "reverse' using the : symbol

vote vote

70

If you want to call your filter inside ng-options the code will be as follows:

ng-options="productSize as ( productSize | sizeWithPrice: product )  for productSize in productSizes track by productSize.id" 

where the filter is sizeWithPriceFilter and it has two parameters product and productSize

vote vote

68

like this:

var items = $filter('filter')(array, {Column1:false,Column2:'Pending'}); 
vote vote

52

If you need two or more dealings with the filter, is possible to chain them:

{{ value | decimalRound: 2 | currencySimbol: 'U$' }}  // 11.1111 becomes U$ 11.11 

Top 3 video Explaining angularjs - How do I call an Angular.js filter with multiple arguments?

Related QUESTION?