2015-01-13 13 views
10

ho istituito un JSON contenente un elenco di paesi con un codice identificativo e Country allegato:Assegnazione ng-modello per le caselle di controllo generati da NG-repeat

Ecco come si presenta:

$scope.countries = [ 
    {"name":"Afghanistan","id":"AFG","country-code":"004"}, 
    {"name":"Åland Islands","id":"ALA","country-code":"248"}, 
    {"name":"Albania","id":"ALB","country-code":"008"}, 
    {"name":"Algeria","id":"DZA","country-code":"012"} 
] 

I quindi utilizzare la direttiva ng-repeat per creare input di casella di controllo per ogni paese.

<div ng-repeat="country in countries"> 
     <label><input type="checkbox" ng-model="{{country.id}}" ng-true-value="'{{country.name}}'" ng-false-value="''">{{country.name}}</label> 
</div> 

Tuttavia quando faccio funzionare il codice ottengo solo le seguenti da visualizzare:

Località casella qui {{country.name}}

Se rimuovo la parte ng-model della ripetizione mie caselle di controllo generano bene, ma ho bisogno un unico ng-model da allegare a ogni checkbox

ng-model="{{country.id}}" 

Come si fa Per quanto riguarda l'attribuzione di un valore unico ng-model?

questa risposta (Generate ng-model inside ng-repeat) non fornisce un valore unico ng-model

+0

provare a rimuovere la {{}} 'tutto il {{country' ' .id}} – simeg

+0

Quando faccio ciò ottengo lo stesso valore di modello ng per tutte le caselle di controllo, ma ho bisogno di un valore di modello ng univoco per ogni casella di controllo – ocajian

+1

Prova a impostare 'ng-repeat' su' country in countries track by $ index 'e' ng-model' a 'countries [$ index]' – simeg

risposta

18

io ti suggerisce, uso:

<div ng-repeat="country in countries"> 
    <label><input type="checkbox" ng-model="myCountry.selected[country.id]" ng-true-value="'{{country.name}}'" ng-false-value="''">{{country.name}}</label> 

</div> 

</div> 
{{myCountry.selected}} 

JS: 

$scope.myCountry = { 
    selected:{} 
}; 
+0

Questo è quello che pensavo avrebbe funzionato, ma per qualche motivo ottengo ancora lo stesso valore di modello ng per ogni ripetizione della mia casella di controllo. Sto ricevendo myCountry.selected [country.id] per ogni checbox – ocajian

+0

Suppongo che tu stia verificando controllando l'elemento. Mostrerà lo stesso. Passa il modello al controller e consenti il ​​risultato. otterrai la tua risposta – Ved

+0

Oh, hai ragione. Stavo usando l'elemento inspect. Grazie per l'aiuto – ocajian