2015-10-08 25 views
6

Powtórz dyrektywę wypisywania rekordów wina z api. Mam funkcji fabrycznego służyć do API wino, które jest następnie dostępnego w moim kontroleraBłąd: [ngRepeat: dupes] co to znaczy?

app.factory("Wine", function ($http){ 
    var factory = {}; 

    //getWines 
    factory.getWines = function(){ 
     return $http.get("http://www.greatwines.9000.com") 
    } 

} 

Kontroler:

app.controller("winesCtrl", function($scope, $http, Wine){ 
     Wine.getWines() 
     .success(function(wines){ 
      $scope.wines = wines; 
     }) 
     .error(function(){ 
      alert("Error!"); 
     }); 
    }); 

VIEW: 

<h2>Wine list</h2> 
    <div class="row margin-top-20 wine-container" ng-repeat="wine in wines"> 
     <div class="col-sm-3"> 
      <img src="{{wine.picture}}" class="img-responsive" /> 
     </div> 
     <div class="col-sm-9"> 
      <div class="margin-top-20"> 
       <span class="bold">Name: </span><span>{{wine.name}}</span> 
      </div> 
      <div> 
       <span class="bold">Year: </span><span>{{wine.year}}</span> 
      </div> 
      <div> 
       <span class="bold">Grapes: </span><span>{{wine.grapes}}</span> 
      </div> 
      <div> 
       <span class="bold">Country: </span><span>{{wine.country}}</span> 
      </div> 
      <div> 
       <span class="bold">Region: </span><span>{{wine.region}}</span> 
      </div> 
      <div> 
       <span class="bold">Price: </span><span>{{wine.price}}</span> 
      </div> 
      <div> 
       <span class="bold">{{wine.description}}</span> 
      </div> 
      <div class="margin-top-20"> 
       <a href="#/wines/{{wine.id}}" class="btn btn-default">Edit Wine</a> 
      </div> 
     </div> 
    </div> 

Kliknąłem na tego błędu iw typowy „niejasne” angularjs modę uzyskać to :

Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: wine in wines, Duplicate key: string:e, Duplicate value: e 

Co to oznacza? wino nie jest tym samym co "wina", dlaczego więc uważa, że ​​jest to duplikat?

Odpowiedz

10

Występuje, jeśli występują duplikaty klawiszy w wyrażeniu ngReat. Zduplikowane klucze są zbanowane, ponieważ AngularJS używa kluczy do kojarzenia węzłów DOM z elementami.

Oznacza to, że $ scope.wines ma pewne wartości, które są duplikowane.

Można także przekazać ten wpis: Angular ng-repeat Error "Duplicates in a repeater are not allowed."

+0

Dzięki, ale nadal nie ma sensu do mnie. Dodałem także http://www.greatwines.9000.com/wines na końcu żądania HTTP i z jakiegoś powodu teraz działa. Wciąż napotykam te tajemnicze błędy i poprawki dzięki angularjs. Nie jest to bardzo spójne. – HGB