我用Google搜索了一下,发现人们有这个问题,但我没有找到任何解决方案。
所以这是我的代码
%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表达式为true而在页面呈现时检查了某些复选框。我实际上并没有再点击它的复选框。当涉及到控制器时,范围似乎忽略了由于ng-checked而被检查的范围。如何让它们很好地同步?
答案 0 :(得分: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,你可能不需要进行ng-checked,因为每个项目都有自己的ng-model。