Angular - Form和$ pristine是否适用于嵌套输入?

时间:2016-02-26 19:52:45

标签: angularjs

我有以下表格。

我面临的几个问题:

1 - 我无法使用$pristine检查表单上的console.log($scope.myFirstForm.$pristine);我看到错误:`无法读取属性' $ prestine'未定义的'。 根据我的代码,这实际上是可能的,即当输入字段嵌套在几个div标签中时使用?

2 - 要清除我当前必须单独执行每个字段的字段,是否可以在表单级别清除所有输入字段?

<form name="myFirstForm">
  <div class="row">
    <div class="large-12 medium-12 small-12 columns">
        <input ng-model="main.pToAdd" type="text"/>
    </div>
  </div>

  <div class="row homeTopBackgroundColor">
     <div class="large-12 medium-12 small-12 columns">
       <h5>Room</h5>
     </div>
     <div class="row large-12 medium-12 small-12 columns">
             <input ng-model="main.o1ToAdd" type="text" />
     </div>
   </div>

   <div class="row">
    <div class="large-12 medium-12 small-12 columns">
        <input ng-model="main.opToAdd" type="text"/>
    </div>
  </div>
</form>

解决: 在我的路线文件中,我指定了一个控制器(一页上有2个控制器)。我正在检查子范围,而不是父母,因此没有找到。所以我删除了路径文件中控制器的设置,并在HTML的所需位置指定了它。

1 个答案:

答案 0 :(得分:1)

首先,控制器中包含的表单将自动位于该控制器的范围内。

表单中包含的输入是表单的一部分,无论它是如何嵌套的。 (使用名称attr来验证它们..为它们分配错误和状态)

将表单设置为pristine状态将清除甚至验证..将您的案例中的主对象设置为{}将清除所有输入字段。

`无法读取属性&#39; $ prestine&#39;未定义的 - &gt;可能是因为您在视图中分配表单之前在控制器中调用它。点击任何按钮尝试相同的事情不应该给出相同的答案。