2013-01-08 8 views
11

私はこれを動作させることができないようです。だから私はそれらがユーザーデータベースのジャンルである場合、私はそれらをチェックしたい映画のジャンルの束を持っています。これは私のコードng-checkedでangularJsのチェックボックスをあらかじめ選択する方法

 

%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}} 
 

であり、これは、だから、すべてのチェックボックスがチェックされるべきであることを意味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} 
 

から#{preferred_genres}です。しかし、私はページをロードするときにチェックボックスはチェックされていません。しかし、もし私がng-checkedをこのようなものにハードコードするなら、それは動作します。

 

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

これは本当に変です。助けてください。

答えて

15

ng-checkedの値は式である必要があります。 {{}}を取り除く。したがって、次のようなものがあります。

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

また、必ずしもng-checked指令を持つ必要はありません。モデルの値が真であれば、あなたのためにチェックされます。

+0

それが動作します!ありがとう。 – toy