目前,我有一个搜索框和一个重复列表。我的重复列表使用具有许多属性的对象。
JSON
$scope.userlist = [{
firstName: "Jack",
lastName: "Smith",
description: "This is a description"
}, {
firstName: "Luke",
lastName: "McDonald",
description: "My name is Luke, and my friend is Jack"
}]
这是我的重复名单:
<md-list-item ng-repeat="user in userList | filter: searchInput as allResults">
<p>{{user.firstName}} {{user.lastName}}</p>
</md-list-item>
我的搜索框模型为searchInput
,对象以$scope.userList
的形式保存到范围内。
如果我搜索jack
,则会显示两个结果,因为这两个对象都包含此搜索字词。
如何限制我的过滤器只能在firstName
和lastName
属性中查看?
答案 0 :(得分:2)
在控制器中使用此功能
$scope.searchFilter = function (user) {
var keyword = new RegExp($scope.searchInput, 'i');
return !$scope.searchInput || keyword.test(user.firstName) || keyword.test(user.lastName);
}
,您的HTML将是:
<md-list-item ng-repeat="user in userList | filter: searchFilter">
<p>{{user.firstName}} {{user.lastName}}</p>
</md-list-item>
答案 1 :(得分:1)
您可以应用此过滤器
<div ng-repeat="user in userList | filter:filterUser">
并在您的控制器中
$scope.filterUser = function(user){
return user.firstName.indexOf($scope.searchInput) !== -1 ||
user.lastName.indexOf($scope.searchInput) !== -1;
}
你有一个例子: https://jsfiddle.net/gjj2w3c8/
答案 2 :(得分:0)
<md-list-item ng-repeat="user in userList | filter:{firstName:searchInput}">
<p>{{user.firstName}} {{user.lastName}}</p>
</md-list-item>