Javascript 角度JS过滤器组选择过滤器
我有一个类似于下面的用户对象:Javascript 角度JS过滤器组选择过滤器,javascript,angularjs,angularjs-directive,angularjs-scope,angularjs-ng-repeat,Javascript,Angularjs,Angularjs Directive,Angularjs Scope,Angularjs Ng Repeat,我有一个类似于下面的用户对象: $scope.users = [ { name : 'John Doe', attached_groups = [ {1:object}, {2:object} ] }, { name : 'Bob Doe', attached_groups = [ {3:object}
$scope.users = [
{
name : 'John Doe',
attached_groups = [
{1:object},
{2:object}
]
},
{
name : 'Bob Doe',
attached_groups = [
{3:object},
{4:object}
]
}
];
在我的HTML中,我选择了以下组
<select id="group_filter">
<option value="1">Group 1</option>
<option value="2">Group 2</option>
<option value="3">Group 3</option>
<option value="4">Group 4</option>
</select>
第一组
第2组
第3组
第4组
我想在组上的ng repeat to filer中添加一个筛选器。我重复以下内容
<tr ng-repeat="user in users| filter:query>
创建文本类型的输入,并ng model=“query”
然后将对其进行过滤:
<tr ng-repeat="x in users | filter:query">...</tr>
。。。
我没有改变$scope.users的结构,但是你需要检查一下,因为我认为这不是最好的方法
重要的是:
您需要定义搜索过滤器:
$scope.search = function(user) {
if ($scope.filter === undefined ) {
return true;
}
var match = false;
angular.forEach(user.attached_groups, function(group) {
if (group.hasOwnProperty($scope.filter)) {
match = true;
}
});
return match;
};
如果更改附加的组,则筛选器可能会更容易。您可以在这里看到示例:$scope.users很奇怪。你确定没有其他的结构?太好了。你是一个传奇:-)
ng-repeat="user in users | filter:search"
$scope.search = function(user) {
if ($scope.filter === undefined ) {
return true;
}
var match = false;
angular.forEach(user.attached_groups, function(group) {
if (group.hasOwnProperty($scope.filter)) {
match = true;
}
});
return match;
};