I am using a angularjs filter method on an repeated array of items and trying to filter numbers with a limitTo filter. The result is not getting applied to the repeat in the DOM.
Here is the html
<div ng-controller="demo as d">
<input type="text" ng-model="d.test" ng-change="d.filterthis(d.test)"><br>
<div ng-repeat="item in d.items | limitTo:d.limitto track by $index">
<span ng-show="!item.show">{{item.myno}}</span> -
<span ng-show="!item.show">{{$index}} - {{item.mystr}}</span><br>
</div>
</div>
App.js filter function withing angularjs
this.filterthis = function(filter){
that.items.map(function(filter){
return function(obj){
obj.show=true;
if(obj.myno.toString().indexOf(filter) >-1){
console.log(obj);
obj.show=false;
}
return obj;
}
}(filter));
};
Items is a array like this
this.items = [{
show:false,
myno:10,
mystr:"test1"
}];
Having "show" as a key on your items, doesnt remove it from the
ng-repeat, and so thelimitTofilter will still return the items. Instead you should leverage thefilterfilter in the repeat like soNote that order is important here, if you
limitToand thenfilteryou are only filtering the limit'ed result. You can change the key upon which you filter by changing{myno:d.search}to a different key, alternatively if you want to search the whole object, simply used.search.Updated Plunker