AngularJS:从ngForm访问父表单?

时间:2015-03-03 18:33:43

标签: angularjs validation

以下是通过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访问它?

1 个答案:

答案 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;
}