Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度:$setPristine关于表单和复选框问题_Javascript_Jquery_Angularjs_Forms_Checkbox - Fatal编程技术网

Javascript 角度:$setPristine关于表单和复选框问题

Javascript 角度:$setPristine关于表单和复选框问题,javascript,jquery,angularjs,forms,checkbox,Javascript,Jquery,Angularjs,Forms,Checkbox,我有一个表格不允许你在第一个条目上勾选复选框,这很奇怪。这几乎就像它没有注册点击 但是,如果您提交表单并在提交第一个表单后尝试选中相同的复选框,则允许您选中复选框。为什么会这样 这是我的复选框的外观: <label ng-repeat="sector in sectors" for="{{sector}}"> <input type="checkbox" id="{{sector}}" value="{{sector}}" ng-model="newService.sect

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

但是,如果您提交表单并在提交第一个表单后尝试选中相同的复选框,则允许您选中复选框。为什么会这样

这是我的复选框的外观:

<label ng-repeat="sector in sectors" for="{{sector}}">
  <input type="checkbox" id="{{sector}}" value="{{sector}}" ng-model="newService.sectors[sector]">{{sector}}
</label>

{{sector}}
我还试图研究如何在此表单上实现
$setPristine
,以便在提交表单时为表单提供一个
.ng pristine

我对Angular很陌生,正在慢慢地尝试理解这一切是如何运作的

我在这里摆好了小提琴:


感谢您的帮助。提前谢谢

问题

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

无法设置未定义的属性“health”

这是因为未创建$scope.newService,您在选中复选框时尝试执行与
$scope.newService['health']=true
等效的操作。如您所见,$scope.newService未定义

解决方案

您应该添加对
resetCreateForm
的调用,以初始化
$scope.newService
属性

(查看最后一行,并附上注释)

编辑:

为了满足您使用$setPristine的需要,您可以查看以下内容


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

小提琴加载角度两次,一次从“框架和扩展”菜单加载,一次从“外部资源”加载。删除一个复选框,它就会工作。@NikosParaskevopoulos我已经删除了外部资源,但复选框仍然不工作。啊,我想让
$scope.createService=createService
初始化
resetCreateForm
,它就在里面。我错了吗?另外,您知道在重置此表单时,我将如何在此表单上使用
$setPristine
?感谢您的帮助。
$scope.createService=createService
只为
$scope.createService
属性分配了对本地函数
createService
的引用。它不会执行该函数,因此
createService
内部的调用
resetCreateForm()
不会发生。而且我不理解您关于$setPristine的问题,如果您可以重试的话,换言之。如果我没有正确解释,很抱歉。我正在尝试解决在提交此表单时如何
$setPristine
。当我加载页面时,表单有一个
.ng pristine
类,但一旦我选中复选框,该类将更改为
.ng dirty
。我正在尝试解决如何使用
$setPristine
将表单设置为原始状态。我希望这是有道理的。哦谢谢你描述得很好的回答。标记啊,这是有道理的。另外,我没有意识到可以调用
{{$pristine}}
表达式来检查表单是否原始。谢谢你。非常有帮助。