2013-01-08 10 views
11

Sembra che non riesca a farlo funzionare. Quindi ho un sacco di generi di film che voglio che vengano controllati se questi sono i generi nel database degli utenti. Questo è il mio codiceCome preselezionare la casella di controllo in angularJs con ng-checked

 

%section(ng-controller="UserCtrl" ng-init="user_genres=#{preferred_genres}") 
    %ul 
     %li(ng:repeat="genre in preferred_genres") 
      %input(type = "checkbox" ng:model="preferred_genres[genre]" id="genre-{{$index + 1}}" ng-checked="user_genres['{{genre}}']") 
      %label{:for => "genre-{{$index + 1}}"} {{genre}} 
 

E questo è #{preferred_genres} da Haml

 

{"Action & Adventure":true,"Animation":true,"Art House & International":true,"Classics":true,"Comedy":true,"Documentary":true,"Drama":true,"Horror":true,"Kids & Family":true,"Musical & Performing Arts":true,"Mystery & Suspense":true,"Romance":true,"Science Fiction & Fantasy":true,"Special Interest":true,"Sports & Fitness":true,"Television":true,"Western":true} 
 

Questo significa che ogni casella di controllo deve essere controllato. Ma nessuna casella è selezionata quando carico la pagina. Tuttavia se ho hardcode ng-checked per essere qualcosa di simile funziona.

 

ng-checked="user_genres['Western']" 
 

Questo è davvero strano. Per favore aiuto.

risposta

15

Il valore di ng-checked deve essere un'espressione. Sbarazzati di {{}}. Quindi, qualcosa di simile:

%input(type = "checkbox" ng-model="preferred_genres[genre]" id="genre-{{$index + 1}}" ng-checked="user_genres[genre]") 

Inoltre, non c'è bisogno di avere necessariamente anche la direttiva ng-checked. Se il valore del tuo modello è vero, allora verrà controllato per te.

+0

funziona! Grazie. – toy

Problemi correlati