ng-repeat多个过滤器,带有数字和日期

时间:2016-03-02 13:55:35

标签: javascript angularjs angularjs-ng-repeat

我使用ng-repeat绘制表格线,我目前正在过滤多个文字参数。这是一个带有固定字符串的简化示例

<tr ng-repeat="thisOffer in offerList | filter: {name: 'hotel', id: 'H2O_'}"></tr>

这很好用,现在我想过滤一个数字,测试它是否低于给定值。是否可以使用如下过滤器?我无法在角度文档中找到类似内容,但我无法相信直接的解决方案不存在

<tr ng-repeat="thisOffer in offerList | filter: {name: 'hotel', id: 'H2O_', number: '<5' }"></tr>
<tr ng-repeat="thisOffer in offerList | filter: {name: 'hotel', id: 'H2O_'} | filter: 'thisOffer.number < 5' "></tr>

4 个答案:

答案 0 :(得分:3)

应用此答案后,this fiddle为您效劳(灵感来自this answer

<div ng-app>
  <div ng-controller="TodoCtrl">
    <ul>
      <li ng-repeat="friend in friends | filter: {name: 'John'} | filter: greaterThan('phone', 1)">
        <span>{{friend.name}}</span>
        <span>{{friend.phone}}</span>
      </li>
    </ul>
  </div>
</div>

答案 1 :(得分:1)

根据https://docs.angularjs.org/guide/filter,您可以链接过滤器,因此您的第二个解决方案应该有效。

如果没有,请提供一个小提琴,以便我可以调查一下

答案 2 :(得分:1)

您需要在相关范围内创建谓词函数,并在ng-repeat中使用它,如:

<tr ng-repeat="thisOffer in offerList | filter: lessThan('Number', 5)""></tr>

答案 3 :(得分:0)

在相关范围内创建一个函数:

$scope.greaterThan = function(prop, val){
    return function(item){
      return item[prop] > val;
    }
}

作为第一个参数,它在对象上采用属性名称。第二个参数是整数值。

在您的视图中使用它:

<tr ng-repeat="thisOffer in offerList | filter: greaterThan('Number', 0)">