Номер фильтра в угловом объекте с использованием limitto
Я использую метод фильтра angularjs для повторяющегося массива элементов и пытаюсь отфильтровать числа с помощью фильтра limitTo. Результат не применяется к повторению в DOM.
Вот 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 в рамках 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));
};
Предметы это массив, как это
this.items = [{
show:false,
myno:10,
mystr:"test1"
}];
1 ответ
"Показать" как ключ к вашим предметам, не удаляет его из ng-repeat
и так limitTo
фильтр по-прежнему будет возвращать элементы. Вместо этого вы должны использовать filter
отфильтровать в повторе, как это так
<input type="text" ng-model="d.search"><br>
<div ng-repeat="item in d.items | filter:{myno:d.search} | limitTo:d.limitto track by $index">
<span>{{item.myno}}</span> -
<span>{{$index}} - {{item.mystr}}</span><br>
</div>
Обратите внимание, что порядок важен здесь, если вы limitTo
а потом filter
Вы фильтруете только ограниченный результат. Вы можете изменить ключ, по которому вы фильтруете, изменив {myno:d.search}
к другому ключу, в качестве альтернативы, если вы хотите найти весь объект, просто используйте d.search
,