2013-07-22 6 views
6

Quindi ho bisogno di conoscere gli extra di un'automobile che un utente vuole includere nelle sue preferenze. Sto provando a creare checkbox di input da una matrice ottenuta da una richiesta Ajax e generare gli input da ng-repeat. L'obiettivo principale è conoscere le caselle selezionate dall'utente. Mi piacerebbe che il mio approccio fosse creare un array ausiliario che contenga quelli selezionati, ma non so come impostare un modello ng unico per ogni elemento nell'iterazione ripetizione ng in modo da poter conoscere l'elenco dei selezionati elementi. Immagino ci sia qualcosa che rimane nella mia conoscenza dell'angolare. Ecco quello che ho per ora ..L'attributo di Ng-model in una casella di controllo dell'ingresso ng-repeat diventa sempre letterale o restituisce l'errore

Nel controllore ...

$http.get('/ajax/ajax_get_extras/'+$scope.car.version+'/false').success(function(data) { 
       $scope.extras = data; 
     }); 
$scope.addExtra = function(){ // ... manage the auxiliar array } 

Nel html ...

<div ng-controller="Controller"> 
     <form novalidate class="simple-form"> 
      <span ng-repeat="extra in extras"> 
       <input type="checkbox" ng-model="extra.id" ng-change="addExtra()" name="extra_{{extra.id}}" >{{extra.name}} - <strong>{{extra.real_price | onlynumber | currency}}</strong> 
      </span> 
     </form> 
</div> 

E io sono bloccato dal momento che il doesnt extra.id trasformare al reale extra.id e rimane come una stringa "extra.id"> _ <

ho provato aggiuntivo _ {{}} extra.id, extra.id, {{extra.id}}, $ indice come posibles ng-model e nessuno funziona.

+0

qual è il tuo vero motivo potrebbe spiegare !! –

+0

l'obiettivo principale (vero motivo) è conoscere le caselle selezionate dall'utente, ho aggiornato la domanda quindi forse è più chiara ora. – R01010010

+3

ecco una domanda simile da cui puoi ottenere una buona idea da qui: http: //stackoverflow.com/questions/17614361/how-to-update-ng-model-dynamically-in-ng-repeat/17614803#17614803 –

risposta

13

In AngularJS 1.1.5 è disponibile "track by" che è possibile utilizzare in ngRepeat.

Così si può:

<input type="checkbox" ng-repeat="e in extra track by $index" ng-model="extra[$index]"> 

Ecco un esempio: http://plnkr.co/edit/6lNo6R5EPsNGHUU6ufTE?p=preview

+0

che ha funzionato anche! – R01010010

Problemi correlati