Как использовать несколько фильтров в $filter Angular JS

У меня есть два фильтра, которые нужно применить к содержимому контроллера. Первый фильтр будет строчным, а другой — пользовательским фильтром.

Я попытался использовать его следующим образом:

$filter('lowercase','cardShortNameRegex')(currentProductObject.shortName);

Применяется только фильтр нижнего регистра, а не другой.

если у кого-то есть какое-либо решение или предложение, пожалуйста, помогите.


person Toretto    schedule 30.08.2016    source источник


Ответы (1)


Просто вызывайте его один за другим.

var lowerCasedName = $filter('lowercase')(currentProductObject.shortName);
var result = $filter('cardShortNameRegex')(lowerCasedName);

Вы также можете определить свою собственную функцию примерно так:

var result = multipleFilters('lowercase', 'cardShortNameRegex')(currentProductObject.shortName);

function multipleFilters() {
  var filters = arguments;
  return function (input) {
    angular.forEach(filters, function (filterName) {
      input = $filter(filterName)(input);
    });
    return input;
  }
}

который принимает несколько имен фильтров и применяет их.

person Domas Mar    schedule 30.08.2016
comment
Есть ли другой доступный способ? Если для этого есть однострочное решение, это будет хорошо, потому что мне нужно сделать это во многих местах для разных условий. - person Toretto; 30.08.2016
comment
@Toretto Я обновил свой ответ другим возможным решением - person Domas Mar; 30.08.2016