角度“ng-repeat” - 如何仅过滤两个属性
Angular `ng-repeat` - how to filter only two properties?
目前,我有一个搜索框和一个重复列表。我的重复列表使用具有许多属性的对象。
杰伦
$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
属性中查看?
在控制器中使用它
$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>
您可以应用此过滤器
<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/
<md-list-item ng-repeat="user in userList | filter:{firstName:searchInput}">
<p>{{user.firstName}} {{user.lastName}}</p>
</md-list-item>
相关文章:
- 检查来自不同数组的两个元素的一个属性是否相等
- 交换对象上两个属性的值
- 删除两个独立对象中的属性,而不使用多余的删除语句
- JavaScript - 合并两个对象数组并根据属性值删除重复数据
- 比较主干中的两个模型属性
- 速度.js动画两个属性时持续时间不同
- 查找/合并具有共同属性的两个对象
- JQuery选择:两个属性's值不相等
- 在ramda.js中将两个属性合并在一起
- 有没有一个lodash函数可以合并两个对象并删除其中一个对象的属性(如果它们没有)'不存在于另一个中
- JS:两个或多个非严格模式下具有相同名称的对象属性
- 如何在 JavaScript 中检查多个对象属性两次
- jQuery 选择器,用于通过比较元素的两个数据属性来选择元素
- 为什么我的 Javascript 中的两个正则表达式文本在一个属性上有所不同
- 两个 JavaScript 对象具有相同的属性实现方式,但原型不同
- JavaScript 中通过公共属性“交叉”两个 JSON 对象数组的最佳方式
- 如何在培根中合并两个属性.js
- 如何根据两个对象属性对对象数组进行排序
- 基于两个属性从 javascript 中的对象数组中获取唯一数组
- 如何连接数组中对象的两个属性以用作ngOptions中的标签