I'm trying to make a multi-filter for ng-repeat. But when my filter returns an empty array, it pops up:
Error: [ngRepeat:dupes] Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: task in tasks | multipleFilter:filter, Duplicate key: undefined:undefined, Duplicate value: undefined
HTML:
<div ng-repeat="task in tasks | multipleFilter:filter">
Filter:
function multipleFilter() { return function(input, filters) { console.log(arguments); for (var index in input) { var current = input[index]; for (var filter in filters) { console.log("filter is", filter, filters[filter]); if (filters[filter] == "all") continue; if (Array.isArray(filters[filter]) && filters[filter].indexOf(current[filter]) === -1) delete input[index]; } } console.log("Outer input: ", input); return input; } }
An example on JSFiddle (sorry for the mess in HTML). You need to make the filters work.