AngularJS - 过滤对象中的选定属性
Posted
技术标签:
【中文标题】AngularJS - 过滤对象中的选定属性【英文标题】:AngularJS - Filter selected property in an object 【发布时间】:2015-06-04 11:14:58 【问题描述】:角度$filter('filter')
有什么方法可以过滤有限的属性。
Plnkr
HTML
<body ng-controller="MyCtrl">
<input type="type" ng-model="filter_value" />
<ul>
<li ng-repeat="row in data | filter: filter_value">row.name +'--'+ row.age</li>
</ul>
</body>
JS
var app = angular.module('myApp', []);
app.controller('MyCtrl', function($scope, $filter)
$scope.data = [
name: "Moroni", age: 50, secret: 'one',
name: "Tiancum", age: 43, secret: 'one',
name: "Jacob", age: 27, secret: 'two',
name: "Nephi", age: 29, secret: 'two',
name: "Enos", age: 34, secret: 'two'
];
);
问题
我有一个名为 secret 的属性,我不希望用户根据该字段进行过滤,即,如果用户输入 one
或 two
,则应根据属性 name
和 age
而不是 @ 987654329@.
有没有办法在内置的角度滤镜中做到这一点?
【问题讨论】:
【参考方案1】:您必须使用自定义过滤器手动排除不需要的字段。
这是一个固定的plnkr
html:
<body ng-controller="MyCtrl">
<input type="type" ng-model="search.filter_value" />
<ul>
<li ng-repeat="row in data | usersListFilter:search.filter_value">row.name +'--'+ row.age</li>
</ul>
</body>
app.filter('usersListFilter', usersListFilter);
function usersListFilter()
return function(usersArray, searchTerm)
if (!searchTerm) return usersArray;
var term = searchTerm.toLowerCase();
return usersArray.filter(function(user)
return user.name.toLowerCase().indexOf(term) != -1 || user.age.toString().indexOf(term) != -1;
);
;
【讨论】:
以上是关于AngularJS - 过滤对象中的选定属性的主要内容,如果未能解决你的问题,请参考以下文章
如何根据 angularjs 中的选定对象更新 ng-model?