我在一个用户中有一个设置节点,在一个项目中有三个布尔值和三个完全相同的值。我想根据要显示的用户设置过滤项目列表。
我搜索了高低,似乎没有任何工作:
项:
{"cash_back": true,
"miles": false,
"points": false
}
用户:
settings: {"cash_back": true,
"miles": false,
"points": true
}
HTML:
ng-repeat="item in items | filter: {cash_back: user.settings.cash_back, points: user.settings.points, miles: user.settings.miles} | limitTo: curLimit"
...但如果我有一个
它确实有效filter: {cash_back: user.settings.cash_back}
显然只是为了这个设置...
任何人都可以帮忙吗?
我希望看到所有这些都是真的(如果点和里程都是真的,那么即使有一个点数值为false的里程项目,也会看到所有点数和里程项目)
答案 0 :(得分:0)
我自己想通了。 (需要注意的一点是在我的用户节点中我跟踪项目ID列表 - 初始for循环的原因)我设置了一个过滤函数并比较了两个布尔值(我将每个值分隔成一个if语句用于调试和跟踪结果 - 这可以在以后清理。)
功能:
$scope.settingsFilter = function(card){
var temp = {};
for(c in $scope.cards){
if ($scope.cards[c].id === card){
temp = $scope.cards[c];
break;
}
}
if(($scope.user.settings.cash_back == true && temp.cash_back == true)){
return true;
}
if(($scope.user.settings.points == true && temp.points == true)){
return true;
}
if(($scope.user.settings.miles == true && temp.miles == true)){
return true;
}else{
return false;
}
return false;
}
HTML:
ng-repeat="card in userCards | filter:settingsFilter track by $index"