В соответствии с вашим кодом, вы пытаетесь добавить критерии несколько раз, то вы хотите отфильтровать с этими критериями.
Здесь, в вашем JSON, всего 3 объекта. {имя, телефон и возраст}.
Таким образом, ваши критерии не должны превышать 3 ряда, и он не должен иметь одну и ту же вещь дважды. Если вы это сделаете, вам нужно создать собственный фильтр. Используйте следующий код
$scope.newList = function() {
var searchBy = {};
angular.forEach($scope.newCriteria, function(criteria, key) {
searchBy[criteria.name] = criteria.value;
});
$scope.newfriends = $filter('filter')($scope.friends, searchBy);
}
И Html следующим
<div id="searchy">
<ul class="list-unstyled">
<li style="display: inline-block" ng-repeat="crtia in newCriteria">
<table>
<tr>
<td>
<select ng-model="crtia.name" ng-options="searchopt for searchopt in searchcriteria " ng-click="searchy.check()"></select>
</td>
<td>
<input ng-model="crtia.value" placeholder="{{crtia.name}}" ng-change="newList()" />
</td>
</tr>
</table>
</li>
</ul> <button ng-click="searchy.generate()">Add Criteria</button> </div>
Вот обновленный plunker. http://plnkr.co/edit/r5OcI366dyvLQ24fFIje?p=preview.
Ссылка Plunkr: http://plnkr.co/edit/3yOmiIJ9Yu9RfAgmuVA7 –
Если вы создаете подходящую модель поиска, например search.name, вам не нужно использовать '$ filter' в вашем контроле Пожалуйста, проверьте мой ответ. – Reza