AngularJS: 从 ngForm 访问父表单?
AngularJS: Access parent form from ngForm?
这里是 AngularJS 通过 ngForm 进行表单验证的典型示例:
<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
访问它?
可以通过 $$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;
}
这里是 AngularJS 通过 ngForm 进行表单验证的典型示例:
<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
访问它?
可以通过 $$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;
}