Javascript Angularjs形成元素的动态有效状态

Javascript Angularjs形成元素的动态有效状态,javascript,angularjs,validation,dynamic,disabled-control,Javascript,Angularjs,Validation,Dynamic,Disabled Control,Angularjs 1.3-beta.8 这是一个输入表,嵌入在包含其他表单元素的表单中。 此问题仅与此表有关。这里有几件事要记住 没有其他嵌套表单,只有一个主表单,我们称之为主表单,它包含所有表单元素,而不仅仅是这个表 使用您看不到的按钮将行动态添加到表单中。表格左侧的红色圆圈也可以删除行。 可能有数百行,或者只有一行;但必须至少有一行 唯一相关的行是输入了付款金额的行。 每个输入可能没有验证或某些验证(从服务器为每个输入动态分配) 这意味着每个单独的输入将不同,可能是这样的 $scope.

Angularjs 1.3-beta.8

这是一个输入表,嵌入在包含其他表单元素的表单中。 此问题仅与此表有关。这里有几件事要记住

没有其他嵌套表单,只有一个主表单,我们称之为主表单,它包含所有表单元素,而不仅仅是这个表

使用您看不到的按钮将行动态添加到表单中。表格左侧的红色圆圈也可以删除行。
可能有数百行,或者只有一行;但必须至少有一行

唯一相关的行是输入了付款金额的行。
每个输入可能没有验证或某些验证(从服务器为每个输入动态分配)

这意味着每个单独的输入将不同,可能是这样的

$scope.masterForm.thisInput.$error = {required: true, format: true, somethingnew: true, etc...}
或者它可能是什么也看不见的表图片;只有“账号”和“到期总额”字段存在验证错误

问题:我如何忽略每行输入中的输入验证,该输入已设置验证,并且仅当填写了“付款金额”时

这个问题有点误导,因为我知道如何触发Angularjs中的状态更改,但是我所尝试的一切都不会更改表单验证

这是我试过的-

我确实这样搜索过,但没有找到一个在这个案例中有效的答案

提交表单时,它会标记所有未通过验证的输入。我劫持了submit函数,首先运行form对象和每个“named”输入的$setValidity状态,如下所示

loop through $scope.masterForm and look for input name fields
  When you find the relevant fields of table inputs that have no payment amounts
    then run through each input.$error and then input.$setValidity of each
      $error (like required: true), set these to false (like required: false) - thanks
这会将每个输入设置为有效-

input.$valid (is true)
input.$invalid (is false)
input.$error (are all set to false)
但是,如表所示,所有输入仍然显示无效

还有masterForm对象,它包含每个输入名称对象。在form对象中还有masterForm.$error对象,它们与input.$error对象相同,但只是将所有form$error对象集合在一起。我还试图更改这些值,这确实发生在我想要更改的输入上,但表单仍然无效

我也试着去检查每一行,这意味着如果它们不符合要求,我会在提交时删除它们,但是表单仍然会看到它们并声明表单仍然无效

即使我可以为每个输入设置有效性,表单也不关心。这是因为我必须更改表单和输入对象中的$error状态吗?他们不应该一起改变状态吗

这仅仅是因为我使用的是1.3-beta.8吗? 有没有更简单的方法? 我可以使用1.3-beta.12+版本中提供的$validators管道进行更多控制吗

不需要代码,因为我没有一个可以工作的代码。如果你知道如何做到这一点,请提供你的例子