是否可以使用可变过滤器?

时间:2017-03-06 08:02:39

标签: angularjs

我尝试使用过滤器,根据点击或输入信息进行更改。

<input
  name="hotelinput"
  type="text"
  ng-keydown="changeFilterToKeyPressed()"
  ng-click="changeFilterToClicked()">

<div ng-repeat="hotel in filteredHotels = (hotels | VARIABLEFILTER | orderBy: 'country') track by $index">
    ...
</div>

我知道你可以做过滤器:变量并在控制器中更改它,但我需要每次更改我的一个自定义过滤器的完整过滤器。

2 个答案:

答案 0 :(得分:1)

我没有测试过,但这样的事情是可能的

JS

if(x){
  $scope.VARIABLEFILTER = $filter('myCustomFilter')
} else {
  $scope.VARIABLEFILTER = $filter('myCustomFilter2')
}

我让它工作并重写了我曾经在其他问题上做过的过滤器 http://plnkr.co/edit/LuA3hYr7mImihYnVIxqQ

  .filter('applyFilter', function($filter) {
    return function(input, filterToApply) {
      return filterToApply === undefined ? input : $filter(filterToApply)(input)
    }
  })

我希望那就是你要找的东西

答案 1 :(得分:0)

您需要ngChange而不是ngClick

<input
  name="hotelinput"
  type="text"
  ng-model="filterKey"
  ng-change="changeFilterToKeyPressed()"
  ng-focus="changeFilterToClicked()">

并更新你的函数changeFilterToKeyPressed

$scope.changeFilterToKeyPressed = function() {
    $scope.VARIABLEFILTER = someUpdatesWhichYouWant($scope.filterKey); //You can use filterKey on any change
}