Вызвать обычную функцию фильтра в контроллере AngularJS - PullRequest
0 голосов
/ 07 сентября 2018

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

<select class="..."
  ng-model="selectedItem"
  ng-options="item.name for item in items | filter:filterItems(someArgument)">
</select>

Эта функция определена как обычная функция в контроллере, это не фильтр AngularJS:

$scope.filterItems = function(someArgument) {
  return function(item) {
    // Do something

    return someResult;
  }
};

Это прекрасно работает.

Однако теперь я хочу использовать ту же функцию фильтра в контроллере и подсчитывать количество элементов после фильтрации.

Я НЕ МОГУ использовать этот код, поскольку filterItems() не является фильтром AngularJS:

$scope.countFilteredItems = function() {
  return $filter('filterItems')($scope.items, someArgument).length;
};

Можно ли каким-либо образом использовать функцию фильтра в контроллере, фактически не выполняя сам процесс фильтрации? Могу ли я использовать сервис $filter с функцией ванильного фильтра?

1 Ответ

0 голосов
/ 07 сентября 2018

Мне удалось вызвать функцию фильтра с помощью службы $filter, как @jonrsharpe предложил в своем комментарии:

$scope.countFilteredItems = function() {
  var filteredItems = $filter('filter')($scope.items, $filterItems(someArgument));

  var count = 0;
  if (filteredItems !== undefined && filteredItems !== null) {
    count = filteredItems.length;
  }

  return count;
};
...