以下是通过ngForm进行AngularJS表单验证的典型示例:
<form name="parentForm">
<div ng-form="childForm">
<input ... />
<span class="error" ng-if="childForm.$invalid && (childForm.$dirty || parentForm.$submitted)">...</span>
</div>
...
</form>
但是,如果你不知道名字parentForm
或者它不在范围内,因为childForm
在指令中会怎样?有没有办法通过childForm
访问它?
答案 0 :(得分:5)
可以通过$$parentForm
属性从子表单访问父表单。
因此,ng-if
表达式为childForm.$invalid && (childForm.$dirty || childForm.$$parentForm.$submitted)
请注意,这在Angular 1.3及更高版本中可用,而不是在1.2中。
您的span
可能位于具有独立范围的指令中,而$scope.childForm
undefined
。作为解决方法,您可以在指令中的范围上设置表单:
require: '^form',
link: function (formCtrl) {
$scope[formCtrl.$name] = formCtrl;
}