2013-01-09 3 views
2

저는 이것을 봤는데 사람들이이 문제를 가지고 있다는 것을 알았지 만 해결책을 찾지 못했습니다.AngularJs는 ng-model과 바인딩되지 않습니다.

그래서이 확인란 중 일부는 NG-확인 발현으로 인해 확인하는 경우 예를 들어, 내 코드

 

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

입니다 사실 및 페이지 렌더링합니다. 그리고 실제로 다시 체크 박스를 클릭하지 않았습니다. 컨트롤러에 관해서, 범위는 ng-checked로 인해 검사 된 것을 무시하는 것처럼 보입니다. 어떻게 그들을 잘 동기화 할 수 있습니까?

답변

2

나는 실제 문제가 무엇인지 이해하지 못한다. 그러나이 fiddle이 원하는 것인지 확인한다. (나는 당신의 other post에서 preferred_genres의 목록을 얻을.)

preferred_genres 업데이트 체크 박스의 상태에 따라되고있는 컨트롤러 범위 속성 :

<li ng-repeat="(genre, checked) in preferred_genres"> 
    <input type="checkbox" ng-model="preferred_genres[genre]" 
    id="genre-{{$index + 1}}"> 

를 @ dnc253 다른 게시물에서 언급 한 바와 같이, 당신은 아마 돈 ' 각 항목에는 고유 한 모델이 있으므로 확인해야합니다.

+1

@toy가 'user_genres'의 원본 목록을 서버에서 가져온 경우 (예 : 원래 검사로 재설정 한 경우) 컨트롤러에 추가 할 수 있습니다. $ scope.preferred_genres ='angular.copy ($ scope.user_genres); ' –

관련 문제