Angular.js: фильтр ng-repeat по отсутствию в массиве
Мне нужно фильтровать элементы в ng-repeat, так что будут отображаться только те элементы, которые не отображаются в массиве alreadyAddedValues ():
<ul class="dropdown-menu">
<li ng-repeat="v in values() | filter: { ????? } ">{{value.name}}</li>
</ul>
$scope.values() = function(){
................
}
$scope.alreadyAddedValues() = function()
{
//returns an array
}
Поиск уже добавленного значения должен выполняться с помощью value.shortName
Ответы
Ответ 1
Вы можете, например, использовать специальную функцию для фильтрации:
<li ng-repeat="v in values() | filter:filterAlreadyAdded ">{{value.name}}</li>
На контроллере:
$scope.filterAlreadyAdded = function(item) {
// filter logic here...
// return false if item already added, true otherwise
};
jsfiddle: http://jsfiddle.net/bmleite/5VbCJ/