Ng-repeat and filter an array of primitives in angular

What I want to do is filter out an array of numbers / strings by input value. My code looks something like this.

Works well if $ scope.groups [#]. numbers is an array of objects, filter search by properties of objects. However, I want to filter out my simple array of simple values ​​in this case being tracked using $ index.

Is it possible? any workaround? or I still need to use an array of objects.

Here is an example of my example on jsfiddle http://jsfiddle.net/u9y9h/3/

HTML:

<div ng-app>
<div ng-controller="repeater">
  <input placeholder="number" type="text" ng-model="number">
  <input type="button" ng-click="addItem()" value="Add item"><br>
  <input placeholder="query"  type="text" ng-model="query">
  <div ng-repeat="group in groups">
    <h3>{{group.title}}</h3>
    <ul>
      <li ng-repeat="item in group.numbers track by $index | filter:query">{{item}}</li>
    </ul>      
  </div>
</div>
</div>

JS:

function repeater($scope) {
  $scope.items = [];
  $scope.groups = [{
    title: 'even',
    numbers: []
  }, {
    title: 'odd',
    numbers: []
  }];

  $scope.addItem = function () {
    if ($scope.number % 2 == 0) {
      $scope.groups[0].numbers.push($scope.number);
    } else {
      $scope.groups[1].numbers.push($scope.number);
    }
    $scope.number = '';
  }
}
+4
source share
1 answer

track by filter, , angular docs:

item in items | filter:searchText track by item.id - , .

,

<li ng-repeat="item in group.numbers track by $index | filter:query">

<li ng-repeat="item in group.numbers | filter:query track by $index ">{{item}}</li>

.

​​

+9

All Articles