I'm trying to filter items by field when check is actived buy I get an error.
<input type="checkbox" ng-model="filterActive">
<input type="text" ng-model="reftext"/>
<input type="text" ng-model="nametext"/>
<tr ng-repeat="car in cars.items | togglableFilter:{reference:reftext, name:nametext}:filterActive">
</tr>
.filter('togglableFilter',[function(){
return function(input, filterText, isFilterActive){
if(!angular.isDefined(isFilterActive) || !isFilterActive) return input;
var ret = input;
var col = [];
var isDefined = false;
var key = Object.keys(filterText);
for (var i = 0; i < key.length; i++) {
if(angular.isDefined(filterText[key[i]])) {
isDefined = true;
angular.forEach(input, function (v) {
if (v[key[i]].indexOf(filterText[key[i]]) !== -1) {
col.push(v);
}
});
}
}
if (isDefined) return col; else return input;
}
}]);
Error: [ngRepeat:dupes] errors.angularjs.org/1.2.13/ngRepeat/dupes?p0=car%20in%20cars.items%20%7C%20togglableFilter%3A%7Breference%3Areftext%2C
cars.itemshas duplicate entries in it so angular is not able to associate a unique key with the DOM element created.if you see the error details in the URL given above you can see that the solution is to use track by $index.