0

我有一个myForm带有一些输入字段的表单。

我要实现什么:每个字段required只有在其他至少一个输入字段不为空时才有效。

我是怎么做的:我ng-required="ctrl.isAtLeasOneFieldSet()"在每个领域都设置了。此函数检查是否设置了任何字段。直到这里它才起作用。如果我设置了一个字段,它会返回true,如果没有设置字段,它会返回false。我也在 Firefox 的“开发人员控制台检查器”中看到它,当我在其中一个输入字段中设置和取消设置值时,需要在真假之间进行更改。

什么不起作用:我在我的控制器中有一个提交功能:

function submitForm(valid) {
   if(!valid) {
      return;
   }
}

并在表格上ng-submit="ctrl.submitForm(ctrl.myForm.$valid)"。即使ng-required设置为true并且未设置输入字段,validin也会submitForm返回true。我已经用这种技术数千次了,ng-required="someValue"但没有像现在这样的功能,它工作得很好。我认为当我设置时有ng-required问题ctrl.isAtLeasOneFieldSet()。看起来表单不会更新到required.

这里有一个模拟:

index.html - 表单

<form name="ctrl.myForm" class="form-horizontal" role="form" data-ng-submit="ctrl.submitForm(ctrl.myForm.$valid)" novalidate>
        <input name="name"
            data-ng-model="data.name"
            data-ng-required="{{ctrl.isAtLeasOneFieldSet()}}"
        />
        <input name="surname"
            data-ng-model="data.surname"
            data-ng-required="{{ctrl.isAtLeasOneFieldSet()}}"
        />
        <!---->
</form>

index.js - 提交表单()

function submitForm(valid) {
    if(!valid) {
        return;
    }

    // Do something else
}
4

1 回答 1

0

我在这种情况下发现了问题。虽然我不确定有什么区别。

正确的: data-ng-required="ctrl.isAtLeasOneFieldSet()"

错误的: data-ng-required="{{ctrl.isAtLeasOneFieldSet()}}"

如果有人知道它为什么会这样以及每种情况下到底发生了什么,请在此处写下答案。

于 2018-12-06T13:49:34.720 回答