2013-01-09 80 views
2

我GOOGLE了這一點,發現人們有這個問題,但我還沒有找到任何解決方案。AngularJs不會綁定ng檢查與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-檢查表達的真實,頁面上呈現。而且我沒有再點擊複選框。當涉及到控制器時,範圍似乎忽略了由於ng檢查而被檢查的範圍。我如何讓他們同步很好?

回答

2

我不確定我明白什麼是真正的問題,但看看這個fiddle是你想要的。 (我獲得preferred_genres名單從other post。)

是基於複選框狀態preferred_genres更新控制器scope屬性:

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

正如你的其他文章中提到@ dnc253,你可能不要由於每個項目都有自己的ng模型,因此需要進行ng檢查。

+1

此外,如果@toy whants保存從服務器獲得的'user_genres'原始列表(例如重置爲原始選中),他可以添加到控制器: $ scope.preferred_genres ='angular.copy($ scope.user_genres); ' –