Angularjs过滤器中的变量名称

时间:2017-05-16 12:14:56

标签: angularjs

我正在使用搜索框(输入)来过滤表格结果。目前它有关StudentName列的过滤,但它必须是动态的。

让我们说:

filter :{'RollNo' :test}
filter :{'Dept' :test} 

简而言之:

<input type="text" ng-model="test">

<table>
    <tr ng-repeat="x in names |filter :{'StudentName' :test}"></tr>
</table>

1 个答案:

答案 0 :(得分:1)

按照以下方法 - 要搜索不同的内容,您需要使用不同的输入字段,否则您必须使用您的需求类型创建自定义过滤器

<label>Any: <input ng-model="search.$"></label> <br>
<label>Name only <input ng-model="search.name"></label><br>
<label>RollNo only <input ng-model="search.RollNo"></label><br>

<table>
  <tr ng-repeat="x in names | filter:search">
    <td>{{x.name}}</td>
    <td>{{x.RollNo}}</td>
  </tr>
</table>

修改

以下是针对您的案例的自定义过滤器:

.filter('TableFilter', function(){
    return function(dataArray, type, filtervalue) {
        if (!dataArray) {
            return;
        }else{
            if(type === 'Name'){
                return dataArray.filter(function(item){
                    var term = item.name === filtervalue;
                    return term;
                });
            }else if(status === 'RollNo'){
                return dataArray.filter(function(item){
                    var term = item.RollNo === filtervalue;
                    return term;
                });
            }
        }
    }
});

<tr ng-repeat="x in names | TableFilter : dropDownvalue : test">