486 votes

Angular ng-repeat Erreur "Les doublons dans un répéteur ne sont pas autorisés".

Je définis un filtre personnalisé comme suit :

<div class="idea item" ng-repeat="item in items" isoatom>    
    <div class="section comment clearfix" ng-repeat="comment in item.comments | range:1:2">
        ....
    </div>
</div>

Comme vous pouvez le voir, le ng-repeat dans lequel le filtre est utilisé est imbriqué dans un autre ng-repeat

Le filtre est défini comme suit :

myapp.filter('range', function() {
    return function(input, min, max) {
        min = parseInt(min); //Make string input int
        max = parseInt(max);
        for (var i=min; i<max; i++)
            input.push(i);
        return input;
    };
});

Je reçois :

Erreur : Les doublons dans un répéteur ne sont pas autorisés. Repeater : comment in item.comments | range:1:2 ngRepeatAction@ https://ajax.googleapis.com/ajax/libs/angularjs/1.1.4/an

0voto

Yogesh Sharma Points 61

Les doublons dans un répéteur ne sont pas autorisés. Utilisez l'expression "track by" pour spécifier des clés uniques.

Repeater: {0}, Duplicate key: {1}, Duplicate value: {2}

Exemple

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title></title>
    <script src="angular.js"></script>

</head>
<body>
    <div ng-app="myApp" ng-controller="personController">
        <table>
            <tr> <th>First Name</th> <th>Last Name</th> </tr>
            <tr ng-repeat="person in people track by $index">
                <td>{{person.firstName}}</td>
                <td>{{person.lastName}}</td>
                <td><input type="button" value="Select" ng-click="showDetails($index)" /></td>
            </tr>

        </table> <hr />
        <table>
            <tr ng-repeat="person1 in items track by $index">
                <td>{{person1.firstName}}</td>
                <td>{{person1.lastName}}</td>
            </tr>
        </table>
        <span>   {{sayHello()}}</span>
    </div>
    <script> var myApp = angular.module("myApp", []);
        myApp.controller("personController", ['$scope', function ($scope)
        { 
            $scope.people = [{ firstName: "F1", lastName: "L1" },
                { firstName: "F2", lastName: "L2" }, 
                { firstName: "F3", lastName: "L3" }, 
                { firstName: "F4", lastName: "L4" }, 
                { firstName: "F5", lastName: "L5" }]
            $scope.items = [];
            $scope.selectedPerson = $scope.people[0];
            $scope.showDetails = function (ind) 
            { 
                $scope.selectedPerson = $scope.people[ind];
                $scope.items.push($scope.selectedPerson);
            }
            $scope.sayHello = function ()
            {
                return $scope.items.firstName;
            }
        }]) </script>
</body>
</html>

0voto

Miguel Suarez Points 192

Juste au cas où cela arriverait à quelqu'un d'autre, je documente cela ici, j'ai obtenu cette erreur parce que j'ai mis par erreur le ng-model au même niveau que le ng-repeat array :

 <select ng-model="list_views">
     <option ng-selected="{{view == config.list_view}}"
         ng-repeat="view in list_views"
         value="{{view}}">
         {{view}}
     </option>
 </select>

Au lieu de :

<select ng-model="config.list_view">
     <option ng-selected="{{view == config.list_view}}"
         ng-repeat="view in list_views"
         value="{{view}}">
         {{view}}
     </option>
 </select>

J'ai vérifié le tableau et je n'ai pas trouvé de doublons, vérifiez simplement vos variables.

0voto

TheUnKnown Points 508

Si vous appelez un ng-repeat à l'intérieur d'une balise < ul>, vous pourrez peut-être autoriser les doublons. Voir ce lien pour référence. Voir Todo2.html

-1voto

Jay Points 1097

Mon JSON La réponse a été la suivante :

{
    "items":  [
        {
            "index": 1, "name": "Samantha", "rarity": "Scarborough","email": "maureen@sykes.mk"
        },{ 
            "index": 2, "name": "Amanda", "rarity": "Vick", "email": "jessica@livingston.mv"
        }
    ]
}

J'ai donc utilisé ng-repeat = "item in variables.items" pour l'afficher.

-1voto

Bunker Boy Points 1485

Les doublons dans un répéteur ne sont pas autorisés. Utilisez l'expression "track by" pour spécifier des clés uniques. Répéteur : sdetail in mydt, Duplicate key : string : , Valeur en double :

J'ai rencontré cette erreur parce que j'avais mal écrit nom de la base de données dans mon api php part......

Cette erreur peut donc également se produire lorsque vous récupérez les données d'une base de données dont vous avez écrit un nom incorrect.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X