Filter Array Using Checkboxes with AngularJS

后端 未结 2 1716
隐瞒了意图╮
隐瞒了意图╮ 2020-12-02 17:59

I have the following code where i\'m trying to filter on the players in the array by checking a checkbox for the pantsize of a player.

I know i have the data array

2条回答
  •  春和景丽
    2020-12-02 18:23

    Full optimzed js Code

    var myApp = angular.module('myApp',[]); var selected; var uniqueItems = function (data, key) { var result = []; for (var i = 0; i < data.length; i++) { var value = data[i][key]; if (result.indexOf(value) == -1) { result.push(value); } } return result; }; var fliter = function(totalData,selectedData,equalData){ var filterAfter = []; selected = false; for (var j in totalData) { var p = totalData[j]; for (var i in selectedData) { if (selectedData[i]) { selected = true; if (i == p[equalData]) { filterAfter.push(p); break; } } } } if (!selected) { filterAfter = totalData; } return filterAfter; } function MyCtrl($scope, filterFilter) { $scope.usePants = {}; $scope.useShirts = {}; $scope.useShoes = {}; $scope.players = [ {name: 'Bruce Wayne', shirt: 'XXL', pants: '42', shoes: '12'}, {name: 'Wayne Gretzky', shirt: 'XL', pants: '38', shoes: '10'}, {name: 'Michael Jordan', shirt: 'M', pants: '32', shoes: '9'}, {name: 'Rodman', shirt: 'XXL', pants: '42', shoes: '11'}, {name: 'Jake Smitz', shirt: 'XXL', pants: '42', shoes: '12'}, {name: 'Will Will', shirt: 'XXL', pants: '42', shoes: '12'}, {name: 'Youasdf Oukls', shirt: 'XL', pants: '38', shoes: '10'}, {name: 'Sam Sneed', shirt: 'XL', pants: '38', shoes: '10'}, {name: 'Bill Waxy', shirt: 'M', pants: '32', shoes: '9'}, {name: 'Javier Xavior', shirt: 'M', pants: '32', shoes: '9'}, {name: 'Bill Knight', shirt: 'M', pants: '32', shoes: '9'}, {name: 'One More', shirt: 'M', pants: '32', shoes: '9'}, {name: 'Player One', shirt: 'XXL', pants: '42', shoes: '11'}, {name: 'Space Cadet', shirt: 'XXL', pants: '42', shoes: '12'}, {name: 'Player Two', shirt: 'XXL', pants: '42', shoes: '12'} ]; // Watch the pants that are selected $scope.$watch(function () { return { players: $scope.players, usePants: $scope.usePants, useShirts: $scope.useShirts, useShoes: $scope.useShoes } }, function (value) { $scope.count = function (prop, value) { return function (el) { return el[prop] == value; }; }; $scope.pantsGroup = uniqueItems($scope.players, 'pants'); $scope.shirtsGroup = uniqueItems($scope.players, 'shirt'); $scope.shoesGroup = uniqueItems($scope.players, 'shoes'); var fliterType = [{selected : $scope.usePants,fliter : 'pants'},{selected : $scope.useShirts,fliter : 'shirt'},{selected : $scope.useShoes,fliter : 'shoes'}]; var startFliter = $scope.players; for(var i in fliterType){ var startFliter = fliter(startFliter,fliterType[i].selected,fliterType[i].fliter); } $scope.filteredPlayers = startFliter; }, true);}

提交回复
热议问题