How do I call an Angular.js filter with multiple arguments?
angularjs
Solution
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>
Problem
As from the documentation, we can call a filter such as date like this: ``` {{ myDateInScope | date: 'yyyy-MM-dd' }} ``` Here date is a filter that takes one argument. What is the syntax to call filters with more parameters both from templates and from JavaScript code?