угловой НГ-повторить пропустить элемент, если он совпадает с выражением

Я'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 Попытка

Комментарии к вопросу (1)
Решение

Как @Максим 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 наследует от родительской помощью прототипного наследования.

Это, как правило, не'т повлиять на нормальное поведение, но для того, чтобы предотвратить непредвиденные ситуации, вы должны помнить об этом перед реализацией.

Комментарии (3)

Я знаю, что это старый, но в случае, если кто-то будет искать другое решение, вот еще один способ решить эту проблему - использовать стандартные фильтр функциональные возможности:

объект: шаблон объект может быть использован для фильтрации определенных свойств объекты, содержащиеся в массиве. Например, {имя: на"М" по тел.:"и 1" и} предикат будет возвращать массив предметов, которые имеют свойство name содержащий на "М" и свойство телефона, содержащие "и 1" по. ... Сказуемое может быть сведено на нет, добавив строку с !. Например, {имя: " но!М" и} предикат будет возвращать массив предметов, которые имеют свойство name не содержащий и"М" и.

Так что для ТС пример что-то вроде этого должны сделать:

<ul>
    <li ng-repeat="player in players | filter: { name_key: '!FirstPerson' }"></li>
</ul>

Не нужно писать пользовательские фильтры, не нужно использовать НГ-если это's новый объем.

Комментарии (5)

Вы можете использовать заказ фильтр, когда вы реализуете НГ-повторить. Что-то вроде:

 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</роз>

Комментарии (1)