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

时间:2014-11-26 17:32:26

标签: angularjs validation dynamic disabled-control

Angularjs 1.3-beta.8

enter image description here

这是一个输入表,它嵌入在包含其他表单元素的表单中。 这个问题仅针对此表。以下是一些要记住的事项。

没有其他嵌套表单,只有一个主表单,我们将调用masterForm并包含所有表单元素,而不仅仅是此表。

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

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

这意味着每个输入都会有所不同,可能就是这个

$scope.masterForm.thisInput.$error = {required: true, format: true, somethingnew: true, etc...}

或者表格图片中没有任何内容;只有“帐号”和“总截止日期”字段才有验证错误。

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

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

这是我尝试过的 -

我确实搜索了SO,但没有找到在这种情况下有效的答案。

提交表单时,它会标记所有未通过验证的输入。我已经劫持了submit函数,首先运行每个“命名”输入的表单对象和$ 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对象,它包含每个输入名称对象。在表单对象中还有masterForm。$ error对象与输入。$ error对象相同,但只是将所有表单$ error对象聚集在一起。我也尝试更改这些值,这确实发生在我想要更改的输入上,但表单仍然无效。

我还尝试过ng-if每一行,这意味着如果他们不符合要求我会在提交时删除它们,但是表单仍然会看到它们并说明表单仍然无效。

即使我可以为每个输入设置Valal,但表单并不关心。这是因为我必须在表单和输入对象中更改$ error状态吗?他们不应该一起改变国家吗?

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

不需要代码,因为我没有代码可行。如果您知道如何操作,请提供您的示例。

0 个答案:

没有答案