我是角色
的新人我动态创建表意味着我不知道表数组中的字段名是什么。
在我的表数组中有一个隐藏属性“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>
提前致谢
答案 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>