Angular:Form和Checkbox问题上的$ setPristine

时间:2014-10-15 14:57:39

标签: javascript jquery angularjs forms checkbox

我有一张表格,不允许你检查第一个条目的复选框,这很奇怪。它几乎就像没有注册点击一样。

但是,如果您提交表单并在提交第一个表单后尝试检查相同的复选框,则可以选中复选框。这是为什么?

这是我的复选框的样子:

<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/

感谢任何帮助。提前谢谢!

1 个答案:

答案 0 :(得分:1)

问题

使用您的JSFiddle示例,如果您在单击复选框时查看控制台,则会看到错误:

  

无法设置属性&#39; health&#39;未定义的

因为没有创建$ scope.newService,并且您在检查复选框时尝试执行等同于$scope.newService['health'] = true的操作。所以,正如您所看到的,$ scope.newService未定义。

解决方案

您应该添加对resetCreateForm的来电,以初始化您的$scope.newService媒体资源。

JSFiddle(查看最后一行,并附上评论)

编辑:

要解决使用$ setPristine的问题,可以查看JSFiddle

您所要做的就是在表单上添加name属性,并按名称将其称为$ scope属性。然后在表单属性上调用$setPristine()