我在我的AngularJS应用程序中有以下JSON对象数组。
现在我需要添加两个输入字段的搜索表单,即
在此处我已经使用了条件
在控制器中,我的输入模型如下所示: $scope.clientSearch = { clientCode:'', clientName:'', clientRole:'' }
有谁能帮助我以简单和通用的方式解决这个过滤问题?
$scope.clients = [ {
"code": "FREG",
"name": "Feranget",
"role": "employee"
},
{
"code": "CRTE",
"name": "Crenart",
"role": "admin"
},
{
"code": "DERT",
"name": "Derta",
"role": "admin"
} ]
我有一个搜索表单,可以在输入文本框中输入代码,以根据代码搜索客户端。因此,我在ng repeat上应用了一个过滤器,针对属性code
进行过滤,这个过滤器工作得很好。
<tbody ng-if="clientSearch.clientCode">
<tr ng-repeat="client in clients | filter:{ code: clientSearch.clientCode }">
</tbody>
现在我需要添加两个输入字段的搜索表单,即
name
和role
,其模型分别为clientSearch.clientName
和clientSearch.clieRole
。应该在对象的name
属性上过滤clientSearch.clientName
,并在对象的role
属性上使用AND
操作基于输入字段过滤clientSearch.clieRole
。例如,如果在相应的输入框中输入了code
和role
,则应根据code
和role
进行客户端过滤,但应忽略name
过滤,因为它是空的。如果还在输入框中输入name
,则应基于code
、role
和name
过滤客户端列表。空字段应被忽略,所有非空字段都应应用于使用AND
操作过滤客户端列表。在此处我已经使用了条件
<tbody ng-if="clientSearch.clientCode">
,以便当输入字段clientCode
为空时,默认情况下不会出现客户端列表,并且仅当输入的文本与搜索条件匹配时才会出现。这个特性需要在所有三个输入字段clientSearch.clientName
、clientSearch.clieRole
和clientSearch.clientCode
中保持。当我将其替换为<tbody ng-if="clientSearch">
时,它不起作用,默认显示所有客户端列表。在控制器中,我的输入模型如下所示: $scope.clientSearch = { clientCode:'', clientName:'', clientRole:'' }
有谁能帮助我以简单和通用的方式解决这个过滤问题?