2013-04-26 2 views
263

Как из documentation, мы можем назвать такие, как фильтр date так:Как я могу назвать фильтр Angular.js с несколькими аргументами?

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

Здесь дата фильтр, который принимает один аргумент.

Что такое синтаксис для фильтрации вызовов с большим количеством параметров как из шаблонов, так и из кода JavaScript?

ответ

558

В шаблонах вы можете отделить аргументы фильтра от colons.

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

С Javascript, вы называете его как

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

Существует на самом деле пример скрыты в orderBy фильтра документации.


Пример:

Допустим, вы делаете фильтр, который может заменить вещи с регулярными выражениями:

myApp.filter("regexReplace", function() { // register new filter 

    return function(input, searchRegex, replaceRegex) { // filter arguments 

    return input.replace(RegExp(searchRegex), replaceRegex); // implementation 

    }; 
}); 

Invocation в шаблоне, чтобы подвергать цензуре все цифры:

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

В HTML-шаблоне Binding {{filter_expression | filter: expression: comparator}}, В JavaScript $ filter ('filter') (filter_expression, expression, comparator) – sorx00

+0

@pulkitsinghal, что вы имеете в виду?Покажите свой проблемный код в JSFiddle или Plunker. – sorx00

+0

Было бы хорошо, если бы вы только разместили фильтр в Javascript –

10

Я упоминал ниже, где у меня есть ntioned пользовательского фильтра также, как назвать этот фильтр, который, имеющие два параметра

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

и из HTML с помощью шаблона можно назвать этот фильтр, как показано ниже

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

здесь, если вы видите, первый параметр inputString и второй параметр верно, который в сочетании с «обратным», используя символ:

4

Если вы хотите назвать свой фильтр в нг-опции код будет выглядеть следующим образом:

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

где фильтр sizeWithPriceFilter и имеет два параметра продукта и productSize

0

Если вам нужно два или более сделок с фильтром, возможно приковать им:

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

Возможный дубликат: http://stackoverflow.com/questions/16227325/how-do-i-call-an-angular-js-filter-with-multiple-arguments – sjokkogutten

+0

Не затрагивает вопрос «Как мне позвонить Фильтр Angular.js с несколькими аргументами? " (а не «Как вызвать несколько фильтров?») – rom99

1

так:

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

В этом коде jsondata является нашим массивом и в возврате функции мы проверяем «версию», присутствующую в 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]);