2013-01-08 68 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

相關問題