我有一张表格,不允许你检查第一个条目的复选框,这很奇怪。它几乎就像没有注册点击一样。
但是,如果您提交表单并在提交第一个表单后尝试检查相同的复选框,则可以选中复选框。这是为什么?
这是我的复选框的样子:
<label ng-repeat="sector in sectors" for="{{sector}}">
<input type="checkbox" id="{{sector}}" value="{{sector}}" ng-model="newService.sectors[sector]">{{sector}}
</label>
我还尝试了解如何在此表单上实现$setPristine
,以便在提交时为表单提供.ng-pristine
类。
我对Angular很新,我正慢慢地想要了解这一切是如何运作的。
我在这里设置了一个小提琴:http://jsfiddle.net/nh63w6e0/2/
感谢任何帮助。提前谢谢!
答案 0 :(得分:1)
问题
使用您的JSFiddle示例,如果您在单击复选框时查看控制台,则会看到错误:
无法设置属性&#39; health&#39;未定义的
因为没有创建$ scope.newService,并且您在检查复选框时尝试执行等同于$scope.newService['health'] = true
的操作。所以,正如您所看到的,$ scope.newService未定义。
解决方案
您应该添加对resetCreateForm
的来电,以初始化您的$scope.newService
媒体资源。
JSFiddle(查看最后一行,并附上评论)
编辑:
要解决使用$ setPristine的问题,可以查看JSFiddle。
您所要做的就是在表单上添加name
属性,并按名称将其称为$ scope属性。然后在表单属性上调用$setPristine()
。