除了angualr.js中的一列之外,如何在数组中进行过滤

时间:2016-02-18 05:01:53

标签: arrays angularjs

我是角色

的新人

我动态创建表意味着我不知道表数组中的字段名是什么。

在我的表数组中有一个隐藏属性“Sr.No”,它始终是固定的 但问题是,当我搜索记录时,结果将显示包括“Sr.No”值。我使用'$ filter'进行搜索 那么我可能会在搜索结果中排除“Sr.No”列吗?

我的数组是:

var data = [{'Sr.No': '1','Name' : "abc"},{'Sr.No' : '2' , 'Name' : 'xyz'}];

Html代码

<tr ng-repeat= "value in  data | filter: SearchText">
<td ng-repeat = "list in value">
{{list}}
</td>
</tr>

提前致谢

2 个答案:

答案 0 :(得分:1)

我们可以通过多种方式实现这一目标。

1)我们需要在filter中使用expression参数。文档here。我们可以包含类似

的内容
<tr ng-repeat= "value in data | filter: {$:SearchText, SrNo:'!' + SearchText}>

这种方法的问题是,当SearchText为空时,表也是空的。看起来很奇怪。

2)1中的问题可以通过编写自定义过滤器来解决,如下所示

myApp.filter('customFilter',
function($filter)
{
    return function(object, a)
    {
        a = a === undefined ? '' : a;

        if(a.length !== 0)
        {
            return $filter('filter')(object, {$:a, SrNo:'!' + a})
        }
        else
            return object;
    }
});

在标记中,您可以使用

<input ng-model="SearchText" >

    <table>
        <tr ng-repeat= "value in data | customFilter:SearchText " >
            <td>{{value.SrNo}}</td>
            <td>{{value.Name}}</td>
        </tr>
    </table>

小提琴here

答案 1 :(得分:0)

使用仅从名称字段

搜索的SearchText.Name

    

<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>

<body>
    <div ng-app="myApp" ng-controller="MyController">

        <input ng-model="SearchText.Name">

        <table>
            <tr ng-repeat= "value in  data | filter:SearchText">
                <td>{{value.SrNo}}</td>
                <td>{{value.Name}}</td>
            </tr>
        </table>

    </div>
<script>
var app = angular.module('myApp', []);

app.controller('MyController', function ($scope) 
{
    $scope.data = [{'SrNo': '1','Name' : "abc"},{'SrNo' : '2' , 'Name' : 'xyz'}];
});

</script>
</body>
</html>