如何手动调用自定义过滤器?

时间:2016-10-08 10:27:52

标签: javascript angularjs angularjs-scope angularjs-ng-repeat ng-repeat

<div "ng-repeat="phone in phoneList| filter:filterPrice">



//custome filter
 $scope.filterPrice = function (phone) {
        return (phone.price > MIN_VAL && phone.price < MAX_VAL);};

MAX_VAL和MIN_VAL是我从输入获得的输入值,我必须在MAX_VAL或MIN_VAL更改时更新phoneList。 我正在改变值的事件,但如何在列表中更新?

2 个答案:

答案 0 :(得分:1)

您可以使用filter为此过往用户输入minValuemaxValue进行过滤。

<li ng-repeat="phone in phoneList | filterPrice:maxValue:minValue">
     {{ phone }}
</li>

根据您从HTML模板传递的顺序,将要过滤的列表作为第一个参数发送,然后发送minValue,maxValue。过滤后,您可以返回一个新列表。

app.filter('filterPrice', function() {
  return function(phoneList, maxValue, minValue) {
    // You can refine this logic
    if(!maxValue && !minValue)
    return phoneList;
    var filtered = [];
    filtered = phoneList.filter(function(obj){
      if(maxValue && !minValue){
        return obj.price <= maxValue;
      } else if(!maxValue && minValue){
        return obj.price >= minValue;
      }
      return (obj.price >= minValue && obj.price <= maxValue )
    })
    return filtered;
  };
});

Plunker

答案 1 :(得分:0)

使用此格式应用过滤器:

  app.filter('myFilter', function() {
  return function(input, optional1, optional2) {
    var output;
    // Do filter work here
    return output;
  }
});