Javascript ng重复循环输入时禁用ng

Javascript ng重复循环输入时禁用ng,javascript,angularjs,angularjs-ng-repeat,angularjs-ng-disabled,Javascript,Angularjs,Angularjs Ng Repeat,Angularjs Ng Disabled,我正在显示基于数组的输入,如下所示 <div data-ng-repeat="n in langInput.values"> <input type="text" id="auction_name_{{n.selected}}" class="form-control" name="auction_name_{{$index}}" data-ng-model="inputs.auc

我正在显示基于数组的输入,如下所示

 <div data-ng-repeat="n in langInput.values">
    <input type="text"
           id="auction_name_{{n.selected}}"
           class="form-control"
           name="auction_name_{{$index}}"
           data-ng-model="inputs.auction_name[$index + 1]"
           data-ng-minlength="5"
           data-ng-maxlength="60"
           required />
    <span data-ng-show="sellItem['auction_name_'+$index].$error.required">Wymagane!</span>
我知道我可以使用这个
ng disabled
指令,但是我不知道如何检查循环中显示的输入,因为它的名称根据循环的
$index
而改变

我创造了


我的情况是,我知道我可以通过
ng disabled=“sellItem.$error”禁用某些元素无效时的按钮
但在实际项目中的表单中,我的表单要大得多,而且我有很多方法来完成表单,所以最终当用户完成表单的完整填写时,用户仍然会得到一些甚至没有显示为无效的输入

所以我不能使用
ng disabled=“sellItem.$error”
,因为在用户完成表单后,他在后台仍然得到无效的输入

我也不能将表单拆分为许多小表单,因为它将在提交时调用一个端点

我在真实项目中所做的是注入3个不同的按钮,并在正确的步骤中显示它们。每个按钮都需要禁用ng,以避免用户在未完成步骤输入的情况下进入下一步

因此,我需要在一个步骤的ng disabled中指定所有输入(大约5个输入)

所以它看起来像这样:

ng-disabled="sellItem.first_input.$error && 
sellItem.second_input.$error && ..."
我会这样做,但后来我遇到了一个问题,我不能在
ng disabled
中“循环”,我想在它里面“循环”,因为输入的名称是由JS生成的

name="auction_name_{{n.id}}"
它们不是不变的,而是不断变化的,用户可以添加更多的输入并删除它们

在页面开始处,我有两个输入,在JS运行之后是
name=“auction\u name\u 1”
name=“auction\u name\u 2”
(由于绑定插值),然后用户可以和第三个
name=“auction\u name\u 3”
所以我不能在
ng disabled
中硬编码它们

我不知道如何检查循环中显示的输入,因为它的名称随循环的$index而变化

通常情况下,将输入存储为数组中对象的属性,以便在对象在数组中的位置发生变化时,它与对象保持一致

还可以使用对象的
id
属性:

<form name="sellItem" ng-submit="submit()">
    <div data-ng-repeat="n in langInput.values">
        <input type="text"
             id="auction_name_{{n.selected}}"
             class="form-control"
             ̶n̶a̶m̶e̶=̶"̶a̶u̶c̶t̶i̶o̶n̶_̶n̶a̶m̶e̶_̶{̶{̶$̶i̶n̶d̶e̶x̶}̶}̶"̶
             name="auction_name_{{n.id}}"
             ̶d̶a̶t̶a̶-̶n̶g̶-̶m̶o̶d̶e̶l̶=̶"̶i̶n̶p̶u̶t̶s̶.̶a̶u̶c̶t̶i̶o̶n̶_̶n̶a̶m̶e̶[̶$̶i̶n̶d̶e̶x̶ ̶+̶ ̶1̶]̶"̶
             data-ng-model="n.input"
             data-ng-minlength="5"
             data-ng-maxlength="60"
             required />
        <span data-ng-show="sellItem['auction_name_'+n.id].$error.required">Wymagane!</span>
        <span data-ng-show="sellItem['auction_name_'+n.id].$error.minlength">Za krótkie!</span>
        <span data-ng-show="sellItem['auction_name_'+n.id].$error.maxlength">Za długie!</span>
    </div>
    <button type="submit" ng-disabled="sellItem.$error">
          {{Submit}}
    </button>
</form>

威马根!
扎克洛特基!
扎杜吉!
{{提交}
确保为
id
属性生成唯一值


更新 添加了提交按钮

有关详细信息,请参阅


假设您知道langInput.Value的大小,您可以确定哪些可用?是,但用户可以更改输入的计数,他可以添加新的和删除我可以确定的任何方式,但我需要一些额外的功能,将循环输入,并设置一些标志,如果其中任何一个无效,您想把
ng disabled
指令放在哪里?我在你的代码中没有看到一个按钮。请显示整个代码示例,包括表单和按钮。我尝试了,但单击了fork,它没有在plnker更新我的代码。我想要表单下方的按钮现在它工作了,但里面是什么?请同时显示禁用按钮,直到每个输入都有效。
submit
按钮和
ng submit
指令。是的,我可以在本演示中实现这一点,但在我的项目中,我不能,我需要在
ng disabled
中指定确切的输入,因为我有一个大表单,其中包含许多不同的路径,它们有自己的输入。因此,并非所有输入都必须有效才能禁用此按钮。我有3个不同的按钮,我可以通过引用单个输入来禁用它们,例如
ng disabled=“sellItem.nameofement”
,但我不能在ng disabled中循环输入
<form name="sellItem" ng-submit="submit()">
    <div data-ng-repeat="n in langInput.values">
        <input type="text"
             id="auction_name_{{n.selected}}"
             class="form-control"
             ̶n̶a̶m̶e̶=̶"̶a̶u̶c̶t̶i̶o̶n̶_̶n̶a̶m̶e̶_̶{̶{̶$̶i̶n̶d̶e̶x̶}̶}̶"̶
             name="auction_name_{{n.id}}"
             ̶d̶a̶t̶a̶-̶n̶g̶-̶m̶o̶d̶e̶l̶=̶"̶i̶n̶p̶u̶t̶s̶.̶a̶u̶c̶t̶i̶o̶n̶_̶n̶a̶m̶e̶[̶$̶i̶n̶d̶e̶x̶ ̶+̶ ̶1̶]̶"̶
             data-ng-model="n.input"
             data-ng-minlength="5"
             data-ng-maxlength="60"
             required />
        <span data-ng-show="sellItem['auction_name_'+n.id].$error.required">Wymagane!</span>
        <span data-ng-show="sellItem['auction_name_'+n.id].$error.minlength">Za krótkie!</span>
        <span data-ng-show="sellItem['auction_name_'+n.id].$error.maxlength">Za długie!</span>
    </div>
    <button type="submit" ng-disabled="sellItem.$error">
          {{Submit}}
    </button>
</form>