Я'm ищет пути для того, чтобы сказать углового пропустить элемент в НГ-повторите, если оно совпадает с выражением, в основном "продолжить";
В контроллер:
$scope.players = [{
name_key:'FirstPerson', first_name:'First', last_name:'Person'
}, {
name_key:'SecondPerson', first_name:'Second', last_name:'Person'
}]
Теперь в моем шаблоне я хочу показать всем, что не'Матч t name_key='режима обзора от первого лица'
. Я полагал, что это должен быть фильтр, так что я настроить Plunkr, чтобы поиграть с ним, но не'т было никаких удачи. Plunkr Попытка
Как @Максим Shoustin предположил, что лучший способ добиться того, что вы хотели бы использовать пользовательский фильтр. Но есть и другие способы, один из них-использовать НГ-если директива того же элемента были поставить `НГ-повторите директиву (также, здесь'ы plunker):
<ul>
<li ng-repeat="player in players" ng-if="player.name_key!='FirstPerson'"></li>
</ul>
Это может присутствовать незначительный недостаток из чувству прекрасного зрения, но имеет большое преимущество в том, что фильтрация может быть основана на правиле, что не так плотно соединены с "игроков" такие и что можете легко получить доступ к другим данным в приложении'С область применения:
<li
ng-repeat="player in players"
ng-if="app.loggedIn && player.name != user.name"
></li>
Обновление
Как заявлено, это одним из путей решения для такого рода проблемы и может или не может удовлетворить ваши потребности.
Как указывается в комментариях, НГ-если директива, которая фактически означает, что он может делать больше вещей в фоновом режиме, чем вы могли бы ожидать. Например,
НГ-если` создает новый объем из это'ы родитель:
В рамках созданной в рамках ngIf наследует от родительской помощью прототипного наследования.
Это, как правило, не'т повлиять на нормальное поведение, но для того, чтобы предотвратить непредвиденные ситуации, вы должны помнить об этом перед реализацией.
Я знаю, что это старый, но в случае, если кто-то будет искать другое решение, вот еще один способ решить эту проблему - использовать стандартные фильтр функциональные возможности:
объект: шаблон объект может быть использован для фильтрации определенных свойств объекты, содержащиеся в массиве. Например, {имя: на"М" по тел.:"и 1" и} предикат будет возвращать массив предметов, которые имеют свойство name содержащий на "М" и свойство телефона, содержащие "и 1" по. ... Сказуемое может быть сведено на нет, добавив строку с !. Например, {имя: " но!М" и} предикат будет возвращать массив предметов, которые имеют свойство name не содержащий и"М" и.
Так что для ТС пример что-то вроде этого должны сделать:
<ul>
<li ng-repeat="player in players | filter: { name_key: '!FirstPerson' }"></li>
</ul>
Не нужно писать пользовательские фильтры, не нужно использовать НГ-если это's новый объем.
Вы можете использовать заказ фильтр, когда вы реализуете НГ-повторить
. Что-то вроде:
data-ng-repeat="player in players | myfilter:search.name
myfilter.js
:
app.filter('myfilter', function() {
return function( items, name) {
var filtered = [];
angular.forEach(items, function(item) {
if(name == undefined || name == ''){
filtered.push(item);
}
/* only if you want start With*/
// else if(item.name_key.substring(0, name.length) !== name){
// filtered.push(item);
// }
/* if you want contains*/
// else if(item.name_key.indexOf(name) < 0 ){
// filtered.push(item);
// }
/* if you want match full name*/
else if(item.name_key !== name ){
filtered.push(item);
}
});
return filtered;
};
});
Демо <и>Plunker</роз>