JSFiddle - React, Tailwind, and code Playground
HTML
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.0.4/angular.min.js"></script>
<div ng-controller="FilterController">
<p>Prio:</p>
<p>
<div ng-repeat="prio in prios">
<input type="checkbox" ng-model="prio.checked"> {{prio.id}}
</div>
</p>
<p>Type:</p>
<p>
<div ng-repeat="type in types">
<input type="checkbox" ng-model="type.checked"> {{type.id}}
</div>
</p>
<p>
{{ filteredItems.length }} items
</p>
<ul class="unstyled">
<!--<li ng-repeat="vorgang in items | filter:doFilterPrio">-->
<li ng-repeat="item in filteredItems = (items | byPrio: prios | byTyp: types)">
Id: {{item.id}}
Prio: {{item.prio}}
Typ: {{item.type}}
</li>
</ul>
</div>
JavaScript
var strugApp = angular.module('strugApp', []);
strugApp.factory('dummyData', function () {
var items = [];
for (var i = 0; i < 30; i++) {
var randomVal = Math.floor((Math.random()*3)+1); // random zw. 1-3
var prio;
switch (randomVal) {
case 1: prio = "high"; break;
case 2: prio = "normal"; break;
case 3: prio = "low"; break;
}
randomVal = Math.floor((Math.random()*3)+1); // random zw. 1-3
var type;
switch (randomVal) {
case 1: type = "A"; break;
case 2: type = "B"; break;
case 3: type = "C"; break;
}
randomVal = Math.floor((Math.random()*1000)+1);
var item = {id: randomVal, prio: prio, type:type};
items.push(item);
}
// console.log(JSON.stringify(items))
return items;
});
function FilterController($scope, dummyData) {
$scope.items = dummyData;
$scope.types = [{id: 'A', checked :false}, {id: 'B', checked:false}, {id: 'C', checked:false}];
$scope.prios = [{id: 'high', checked :false}, {id: 'normal', checked:false}, {id: 'low', checked:false}];
$scope.filteredItems = [];
}
strugApp.filter('byPrio', function () {
return function (items, prios) {
var filteredItems = [];
for (var i = 0; i < items.length; i++) {
var item = items[i];
var noneIsChecked = true;
for (var j = 0; j < prios.length; j++) {
if (prios[j].checked == true) {noneIsChecked = false; };
if (prios[j].id == item.prio && prios[j].checked == true) {
filteredItems.push(item);
}
}
if (noneIsChecked) {
filteredItems.push(item);
}
}
return filteredItems;
};
})
strugApp.filter('byTyp', function () {
return function (items, types) {
var filteredItems = [];
for (var i = 0; i < items.length; i++) {
...