2013-01-08 29 views
11

Tôi dường như không thể làm điều này để làm việc. Vì vậy, tôi có một loạt các thể loại phim mà tôi muốn chúng được kiểm tra nếu đó là những thể loại trong cơ sở dữ liệu người dùng. Đây là mã của tôiLàm thế nào để chọn trước hộp kiểm trong angularJs với ng-kiểm tra

 

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

Và đây là #{preferred_genres} từ 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} 
 

Vì vậy, đó có nghĩa là mỗi hộp nên được kiểm tra. Nhưng không có hộp kiểm nào được chọn khi tôi tải trang. Tuy nhiên nếu tôi hardcode ng-checked để được một cái gì đó như thế này nó hoạt động.

 

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

Điều này thật kỳ lạ. Hãy giúp tôi.

Trả lời

15

Giá trị của ng-checked cần phải là biểu thức. Thoát khỏi {{}}. Vì vậy, một cái gì đó như thế này:

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

Ngoài ra, bạn không nhất thiết phải có chỉ thị ng-checked. Nếu giá trị của mô hình của bạn là đúng, thì nó sẽ được kiểm tra cho bạn.

+0

nó hoạt động! Cảm ơn. – toy

Các vấn đề liên quan