AngularJS自定义过滤器,用于两列

时间:2017-03-23 11:49:55

标签: angularjs json angularjs-directive angularjs-scope

我有一个带选项1和选项2的选择框; 我有一个table1,column2,column3,column4的表。 Column2和column3是数字字段。

1)我希望我在select-box中选择了option1,该表显示了column2中所有fileld> 0的行,而column3的所有字段都是== 0

2)我希望我在选择框中选择了option2,该表显示了column2中所有fileld的行== 0且column3的所有字段都是> 0

例如

select class="form-control" name="optionsSelect" ng-model="ctrl.table.filterParams.optionSelect" 
        ng-options="option for option in ctrl.ctx.option">
</select>

<div class="bt-table">
    <table class="table table-striped" ng-table="ctrl.tableParams" id="exampleTable">
      <thead>
        <tr>
          <th ng-repeat="item in items"><p ng-bind-html="item"></th>
        </tr>
      </thead>
      <tbody>
        <tr ng-repeat="item in ctrl.table.data">
          <td><a>{{item.column1}}</a></td>
          <td>{{item.column2}}</td>
          <td>{{item.column3}}</td>
          <td>{{item.column4}}</td>
           <td>{{item.column5| date: 'dd/MM/yyyy'}}</td>
          <td>{{item.column6| currency : "" | currencyformat }}</td>
         </span></td>

          <td>{{item.column7}}</td>
          <td>                
            {{item.column8}}
          </td>
        </tr>
      </tbody>
    </table>

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

使用角度&#34;过滤器&#34;过滤。

将其放入您的控制器

ctrl.filterCriteria = function (item) {
    if (ctrl.table.filterParams.optionSelect == option1) {
        return item.column2 > 0 && item.column3 == 0;
    } else if (ctrl.table.filterParams.optionSelect == option2) {
        return item.column2 == 0 && item.column3 > 0
    } else {
        // Display all items
        return true;
    }
};

在模板中更改此内容:

<tr ng-repeat="item in ctrl.table.data | filter:ctrl.filterCriteria">

这样的事情应该有效,我无法测试它,因为我没有测试数据。如果您有任何问题,请添加一个jsfiddle,我会看看它。