2016-11-07 2 views
3

Ich habe kleines Problem mit meiner ng-repeatAngular js ng-repeat doppelte Elemente

$http.get("/test-server/rest/servizi/listaRuoli") 
 
    .success(function(data){ 
 
    \t $scope.servizio = data; 
 
    \t console.log(data.label); 
 
    })
<div class ="input_form_right"> 
 
    <strong>Seleziona un Servizio</strong> (obbligatorio)<br> 
 
    <select class="size_input_newbg"> 
 
     <option ng-repeat="x in servizio" ng-bind = "x.label"></option> 
 
    </select> 
 
</div>

das Problem ist, dass ich nicht den Überblick durch $index wegen mongodb, wie ich auf die lesen können Netz. Einige Ideen? danke!

+1

Ihre Frage ist ein wenig verwirrend. Der Titel sagt etwas und der Inhalt der Frage sagt etwas anderes. Welches ist es? – Ionut

+0

Haben Sie sogar versucht, 'track by $ index' zu verwenden? – Weedoze

Antwort

2

Verwenden ng-options statt:

<select class="size_input_newbg" ng-model="yourmodel" 
    ng-options="r.id as r.label for r in servizio" 
    ng-bind = "r.label"> 
    <option value="" disabled="">Select One</option> 
</select> 
0

Try this:

<style> 
     .title-case { 
      text-transform: capitalize; 
     } 
</style> 

<div class ="input_form_right"> 
     <strong>Seleziona un Servizio</strong> (obbligatorio)<br> 
     <select class="size_input_newbg"> 
      <option class="title-case" ng-repeat="x in servizio track by $index">{{x.label}}</option> 
     </select> 
</div> 

MongoDB nichts mit Tracking von $ index zu tun hat. Wenn Sie versuchen, alle doppelten Optionen zu entfernen, würde ich empfehlen, Ihren GET-Aufruf zu ändern:

$http.get("/test-server/rest/servizi/listaRuoli") 
.success(function(data){ 
    var seenBefore = []; 
    var out = []; 
    for (var i=0;i<=data.length-1;i++){ 
     if (seenBefore.indexOf(data[i].label) == -1) { 
       seenBefore.push(data[i].label); 
       data[i].label = data[i].label.toLowerCase(); 
       out.push(data[i]); 
      } 
    } 
    $scope.servizio = out; 
    console.log(data.label); 
}) 
Verwandte Themen