2

我用谷歌搜索了这个,发现人们有这个问题,但我没有找到任何解决方案。

所以这是我的代码


%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 表达式为真并且在页面呈现上而被选中。而且我实际上并没有再次单击复选框。当涉及到控制器时,范围似乎忽略了由于 ng-checked 而被检查的那个。如何让它们很好地同步?

4

1 回答 1

3

我不确定我理解真正的问题是什么,但看看这个小提琴是否是你想要的。(我从你的一篇文章中获得了一个 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。

于 2013-01-09T04:25:45.617 回答