AngularJS$setValidity在childScope表单上

AngularJS$setValidity在childScope表单上,angularjs,Angularjs,我有一个窗格系统,在我的控制器中包含三种不同的窗体。 现在,据我所知,ng include创建了一个childscope,使其在父作用域中不可用 为了解决表单数据,我将ng模型传递回在ng submit中运行的函数中,但这只是一种方法 在正常情况下,我可以这样做: HTML Form tag example <form novalidate name="myForm" ng-submit="someFunction(form)"> HTML

我有一个窗格系统,在我的控制器中包含三种不同的窗体。 现在,据我所知,ng include创建了一个childscope,使其在父作用域中不可用

为了解决表单数据,我将ng模型传递回在ng submit中运行的函数中,但这只是一种方法

在正常情况下,我可以这样做:

HTML Form tag example
<form novalidate name="myForm" ng-submit="someFunction(form)">

HTML Form Field example
<input ng-model="form.first_name" name="first_name" type="text" pwtest required/>

Controller
$scope.myForm.first_name.$setValidity('required', false);
HTML表单标记示例
HTML表单字段示例
控制器
$scope.myForm.first_name.$setValidity('required',false);
这工作正常,我的表单数据返回,我可以将它发送到我的API,我的字段状态也被正确设置

现在来谈谈问题

HTML Form tag example
<form novalidate name="myForm" ng-submit="someFunction(form)">

HTML Form Field example
<input ng-model="form.first_name" name="first_name" type="text" pwtest required/>

Controller
$scope.myForm.first_name.$setValidity('required', false); <-- fails since myForm doesnt exist
HTML表单标记示例
HTML表单字段示例
控制器

$scope.myForm.first_name.$setValidity('required',false) 根据以上评论,以下是使用子控制器解决问题的一种方法:

<script type="text/ng-template" id="/form.html">
    <form novalidate name="myForm" ng-submit="someFn()" ng-controller="ChildFormCtrl">
       <input ng-model="form.first_name" name="first_name" type="text" required> 
       <br>{{myForm.first_name.$valid}}
    </form>
</script>

<div ng-controller="MyCtrl">
    <div ng-include="'/form.html'"></div>
</div>

根据上面的评论,这里有一种使用子控制器解决问题的方法:

<script type="text/ng-template" id="/form.html">
    <form novalidate name="myForm" ng-submit="someFn()" ng-controller="ChildFormCtrl">
       <input ng-model="form.first_name" name="first_name" type="text" required> 
       <br>{{myForm.first_name.$valid}}
    </form>
</script>

<div ng-controller="MyCtrl">
    <div ng-include="'/form.html'"></div>
</div>

添加子控制器是一个选项吗?您可以将ng提交给子控制器方法,在那里它可以设置有效性,然后它可以调用父控制器上的一个方法?但也许不是。您能否给出一个小的代码片段,看看它的样子?添加子控制器是一个选项吗?您可以将ng提交给子控制器方法,在那里它可以设置有效性,然后它可以调用父控制器上的一个方法?但也许不是。你能给我一个小的代码片段看看它的样子吗?