<div class="well">
<div class="panel-title>
<span class="fa fa-caret-right" ng-if="!showGeneral"></span>
<span class="fa fa-caret-down" ng-if="showGeneral"></span>
</div>
<label>GENERAL</label>
<div ng-if="generalFormName.$valid" class="pull-right">
<i class="fa fa-check" style="color:#4cc94c;font-size:large;"></i>
</div>
<div class="panel-collapse" ng-if="showGeneral">
<general></general>
</div>
</div>
<div>
<form name="generalFormName" novalidate autocomplete="off">
<input type="text" class="form-control align" required ng-model="infor.name" />
</form>
</div>
指令general
是另一个html
。当该表单中的必填字段由用户填写时,我需要在标签的右侧显示一个复选标记。我没有任何按钮来提交和发送表单数据,然后检查验证。我只需要一个复选标记当formname.$valid
。我添加了一个ng-if
,但由于某种原因,我无法获取它。
有人能帮我解决这个问题吗?会有很大的帮助。
提前谢谢。
发布于 2016-09-13 20:26:37
Angular中的表单通过其名称使其验证状态可用,并且仅对其作用域和后代作用域可用。目前,<general>
指令超出了表单的作用域,因此它无法访问验证数据。最简单的解决方案是重新定位表单,使其同时包含输入和<general>
指令:
<form name="generalFormName" novalidate autocomplete="off">
<div class="well">
...
<general></general>
...
</div>
<div>
<input type="text" class="form-control align" required ng-model="infor.name" />
</div>
</form>
如果<form>
必须保持原样,您可以用ng-form
包装它,并在<general>
中使用ng-form
的有效性
<div ng-form="ngFormName">
<div class="well">
...
<general valid="ngFormName.$valid"></general>
...
</div>
<div>
<form name="generalFormName" novalidate autocomplete="off">
<input type="text" class="form-control align" required ng-model="infor.name" />
</form>
</div>
</div>
内部generalFormName
的有效性会影响包装器ngFormName
的有效性。
如果两种解决方案都不起作用(我看不出原因),那么您可以创建一条指令,将其相邻表单的有效性发布到父作用域中的变量。在父作用域中使用变量很棘手,我认为前面的解决方案应该足够了,所以我不会详细介绍。它可以调用回调函数,而不是变量-期望更少的意外。
https://stackoverflow.com/questions/39434416
复制相似问题