Angularjs 在Angular中跨控制器进行表单验证通信

Angularjs 在Angular中跨控制器进行表单验证通信,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我使用的是UI路由器,在同一页上有两个表单。如果其中一个表单无效,我希望禁用“提交”按钮。我不确定如何将此信息从控制器A传递到控制器B。换句话说,我如何与控制器B进行通信,以使表1中的{{paymentForm.$invalid}}不再为真 表格一 <form name="paymentForm" novalidate > <div class="row"> <div class="col-sm-4 form-group" > <

我使用的是UI路由器,在同一页上有两个表单。如果其中一个表单无效,我希望禁用“提交”按钮。我不确定如何将此信息从控制器A传递到控制器B。换句话说,我如何与控制器B进行通信,以使表1中的
{{paymentForm.$invalid}}
不再为真

表格一

<form name="paymentForm" novalidate >

<div class="row">
  <div class="col-sm-4 form-group" >

        <label class="control-label" for="first-name">First Name</label>
        <input autofocus type="text" id="first-name" name="firstName" ng-model="contactForm.contact.firstName"
           placeholder="First Name" class="form-control" required />
    </div>
    <div class="col-sm-2 form-group">
        <label for="middle-name">Initial</label>
        <input type="text" id="middle-name" name="middleName" ng-model="contactForm.contact.middleName"
           placeholder="Initial" class="form-control" >

    </div>

名字
最初的
表格二

<form novalidate name="myForm" >
  <p class="text-muted" ng-bind="myForm.number"></p>

<div class="form-group" >
<label class="control-label" for="cardnumber">Card number</label>
<div class="input-group">
<input id="cardnumber" type="text" placeholder="Card Number" name="cardnumber" class="form-control input-block-level" ng-model="number" payments-validate="card" payments-format="card" payments-type-model="type" ng-class="myForm.expiry.$card.type" required />

卡号

提交

您可以使用将这两个表单嵌套到父表单中。这样,如果两个子表单中的任何字段无效,则父表单将无效。

选项。1:使用嵌套表单并禁用按钮parentForm。$无效,其中parentForm是外部表单的名称

选择权。2:编写一个服务以在两个控制器之间通信

我会在两种情况下这样做, A) 如果您计划在同一视图中为多个表单添加更多,并且禁用逻辑不像只检查父表单的有效性那样简单, B)禁用逻辑很简单,出于某种原因,您不能或不想嵌套这两个表单 C)您的表单位于两个独立的不同视图中,这些视图包含在父视图中,您无法嵌套它们

如果我们计划编写一个公共服务,则使用标志变量来指示每个表单的有效性。将此服务注入两个控制器中


享受吧

多谢各位。如何使用服务,使其知道表单何时不再无效?第一个表单上没有“下一步”或“提交”按钮。
<button type="submit" ng-disabled="myForm.$invalid || paymentForm.$invalid" class="btn btn-primary btn-large" type="button">Submit</button>