Como faço para chamar um filtro Angular.js com vários argumentos?

A partir da documentação , podemos chamar um filtro como data como esta:

{{ myDateInScope | date: 'yyyy-MM-dd' }} 

Aqui data é um filtro que leva um argumento.

Qual é a syntax para chamar filtros com mais parâmetros de modelos e de código JavaScript?

Nos modelos, você pode separar os argumentos do filtro por dois pontos .

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

Do Javascript, você chama isso de

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

Na verdade, existe um exemplo oculto nos documentos do orderBy filter.


Exemplo:

Digamos que você crie um filtro que possa replace coisas por expressões regulares:

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

Invocação em um modelo para censurar todos os dígitos:

 

{{ myText | regexReplace: '[0-9]':'X' }}

Eu mencionei no abaixo onde eu mencionei o filtro personalizado também, como chamar esses filtro que está tendo dois parâmetros

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

e do html usando o template podemos chamar esse filtro como abaixo

 

{{inputString| reverse:true }}

aqui, se você ver, o primeiro parâmetro é inputString e o segundo parâmetro é true, que é combinado com "reverse" usando o símbolo:

Se você quiser chamar seu filtro dentro das opções ng, o código será o seguinte:

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

onde o filtro é sizeWithPriceFilter e tem dois parâmetros product e productSize

como isso:

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

Se você precisa de duas ou mais transactions com o filtro, é possível encadear:

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

Neste código, jsondata é o nosso array e na function return estamos verificando a ‘version’ presente no jsondata.

 var as = $filter('filter')(jsondata, function (n,jsondata){ return n.filter.version==='V.0.3' }); console.log("name is " + as[0].name+as[0]);