2013-01-08 9 views
11

Wydaje mi się, że nie mogę tego uruchomić. Mam więc szereg gatunków filmów, które chcę, aby były sprawdzane, jeśli są to gatunki w bazie danych użytkowników. To jest mój kodJak wstępnie zaznaczać pole wyboru w angularJs z 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}} 
 

A to #{preferred_genres} z 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} 
 

To znaczy każdy wyboru powinno być zaznaczone. Ale nie jest zaznaczone pole wyboru podczas ładowania strony. Jeśli jednak hardcode ng-checked na coś takiego działa.

 

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

To naprawdę dziwne. Proszę pomóż.

Odpowiedz

15

Wartość ng-checked musi być wyrażeniem. Pozbyć się czegoś {{}}. Tak, coś takiego:

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

Ponadto, nie trzeba koniecznie mieć nawet dyrektywę ng-checked. Jeśli wartość twojego modelu jest prawdziwa, zostanie sprawdzona.

+0

to działa! Dzięki. – toy