【问题标题】:AngularJs doesn't bind ng-checked with ng-model [duplicate]AngularJs 不绑定 ng-checked 与 ng-model [重复]
【发布时间】:2013-01-09 00:27:46
【问题描述】:

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

这是我的代码

%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 而被检查的那个。如何让它们很好地同步?

【问题讨论】:

  • 奇怪的是我在复制之前问了这个问题。嗯

标签: javascript angularjs


【解决方案1】:

我不确定我是否理解真正的问题是什么,但看看这个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。

【讨论】:

  • 另外,如果@toy 想要保存从服务器获得的“user_genres”的原始列表(例如重置为原始检查),他可以添加到控制器:$scope.preferred_genres = angular.copy($scope.user_genres);
猜你喜欢
  • 2013-03-13
  • 2013-05-12
  • 1970-01-01
  • 2019-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多