如何使用angularjs筛选列表
我有一个对象数组,最初加载时没有适用的过滤器 然后,在用户选择上,应相应地显示组合列表 我不知道我在这里做错了什么,我没有显示整个列表,一次只显示一个选项。 对于我使用的单一选择如何使用angularjs筛选列表,angularjs,angularjs-scope,angularjs-ng-repeat,Angularjs,Angularjs Scope,Angularjs Ng Repeat,我有一个对象数组,最初加载时没有适用的过滤器 然后,在用户选择上,应相应地显示组合列表 我不知道我在这里做错了什么,我没有显示整个列表,一次只显示一个选项。 对于我使用的单一选择 return $scope.filter[stat.userStatus] || noFilter($scope.filter); 我无法使两个选项同时工作。请在代码中的任何地方使用相同的名称和大小写 admin与administrator admin与admin 如果我理解正确,基本思路如下: $s
return $scope.filter[stat.userStatus] || noFilter($scope.filter);
我无法使两个选项同时工作。请在代码中的任何地方使用相同的名称和大小写
与admin
administrator
与admin
admin
$scope.filterByCategory = function (stat) {
//check if user has a status matching checkbox select
var by_status = $scope.filter[stat.userStatus];
//check if user has a role that matching dropdown list select
var by_roles = stat.roles.indexOf($scope.filter.selectedSearch) !== -1;
return by_status || by_roles; //statisfy either of two will return true;
};
完整演示:过滤器可以如下所示:
<div ng-repeat="item in mylist | filter:filterByStatus | filter:filterByRole">
过滤器从左到右运行,每个过滤器将过滤后的数组传递给下一个过滤器
这是一把小提琴叉,展示了这一技巧:
我能够让您的代码正常工作。这是一种修复方法,更好的方法是制作一个过滤器(也在处理这个问题)。 我所做的假设:- 按成员状态筛选意味着检查“用户状态” 按管理员状态筛选意味着检查“角色” 看看这个 我根据一个对象进行过滤,该对象根据$scope.filter进行更新 对HTML的更改
<div ng-repeat="item in mylist | filter:filterModel">
更新:Mark的过滤器似乎工作正常可以肯定的是,代码中有$scope.filterByCategory=function(stat),它接受stat命名参数。您可以在过滤器中调用此函数,而不提供任何参数。所以这至少打破了你的过滤器。stat是列表的对象,两个选择一起工作,我猜是关于fiddleKunal的-你的问题,即使它包括一个fiddle,也不清楚。我们正试着猜你想要什么。在页面加载时,是否希望显示所有3个用户,然后在每个选择中筛选列表?标题、用户状态和角色中都有admin,这进一步增加了混淆。无论如何,我对你的问题的看法,这里是小提琴,如果它有帮助,这将给我的结果,而不是两者的结合filter@KunalVashist如果要应用这两个条件,请将最后一行更改为&。否则我不知道你想要什么:)
$scope.filterModel =
{
"userStatus":"",
"roles" : ""
}
$scope.$watch('filter', function() {
var myModel =
{
"userStatus":"",
"roles" : ""
}
if($scope.filter.administrator && $scope.filter.lead)
{
myModel.userStatus="";
}
else if($scope.filter.administrator)
{
myModel.userStatus="admin";
}
else if($scope.filter.lead)
{
myModel.userStatus="lead";
}
else
{
myModel.userStatus="";
}
if(angular.equals($scope.filter.selectedSearch,'Default'))
{
myModel.roles="";
}
else
{
myModel.roles=$scope.filter.selectedSearch;
}
$scope.filterModel=myModel;
},true);