ng-repeat track by $ index отображает элемент только один раз, если подобный ключ существует несколько раз в angularjs - PullRequest
0 голосов
/ 28 ноября 2018

Я получаю [ngRepeat: dupes]: ошибку в моем коде angularjs.Поэтому я искал на stackoverflow и нашел решение, которое заявило, что использовать track by $ index.Это работает для меня сейчас.Но он отображает элемент несколько раз, если один и тот же ключ присутствует несколько раз.Я хочу отобразить только один элемент, если один и тот же ключ существует несколько раз.вот мой пример кода из вида:

<div ng-repeat="user in users | filter:myFilter track by $index">
</div>

вот текущий вывод: enter image description here

Я хочу показать эти две карты, я хочу кодпоказать только одну карту, так как они одинаковы.Как мне это сделать?

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Я исправил это, создав фильтр:

var app = angular.module('angularTable', []);

app.filter('unique', function() {
   // we will return a function which will take in a collection
   // and a keyname
   return function(collection, keyname) {
      // we define our output and keys array;
      var output = [],
          keys = [];

      // we utilize angular's foreach function
      // this takes in our original collection and an iterator function
      angular.forEach(collection, function(item) {
          // we check to see whether our object exists
          var key = item[keyname];
          // if it's not already part of our keys array
          if(keys.indexOf(key) === -1) {
              // add it to our keys array
              keys.push(key);
              // push this item to our final output array
              output.push(item);
          }
      });
      // return our array which should be devoid of
      // any duplicates
      return output;
   };
});

app.controller('listdata', function($scope, $http) {

your controller logic for the users array
   });

});

В представлении:

<div ng-repeat="user in users |unique:'name' | filter:myFilter track by $index">
</div>
0 голосов
/ 28 ноября 2018

передайте массив в функцию и создайте массив без повторяющихся значений, таких как myFunction (users) , поэтому секция повтора станет ng-repeat = "user in myFunction (users)" .Напишите функцию самостоятельно.

...