Javascript Angular Js:验证表中的重复对象键

Javascript Angular Js:验证表中的重复对象键,javascript,angularjs,angularjs-directive,angularjs-scope,Javascript,Angularjs,Angularjs Directive,Angularjs Scope,我有一个表,有两列“用户类型”和“用户名”用户类型,有一个下拉选择,这样我可以选择预定义的用户类型,并在用户名中放置一个名称。每次单击都有一个添加按钮,我正在添加另一行 我在这里做一个验证,这样用户就不能选择重复的“用户类型”。 例如,在第1行中,我从下拉列表中选择“值1”。那么从第2行我应该不能选择相同的值。无论如何,这个验证工作正常。 但是有一种情况,如果我添加一个重复的行,然后立即删除它,我仍然无法保存,因为验证错误仍然存在 这是我的jsp- <div ng-class=

我有一个表,有两列“用户类型”和“用户名”用户类型,有一个下拉选择,这样我可以选择预定义的用户类型,并在用户名中放置一个名称。每次单击都有一个添加按钮,我正在添加另一行

我在这里做一个验证,这样用户就不能选择重复的“用户类型”。 例如,在第1行中,我从下拉列表中选择“值1”。那么从第2行我应该不能选择相同的值。无论如何,这个验证工作正常。 但是有一种情况,如果我添加一个重复的行,然后立即删除它,我仍然无法保存,因为验证错误仍然存在

这是我的jsp-

      <div ng-class="{'col-sm-9'}" class="col-md-10">
        <table class="table table-bordered table-striped table-hover table-condensed">
            <thead>
                <th>user type</th>
                <th>user Name</th>
                <th></th>
            </thead>
            <tbody>
                <tr ng-repeat="object in edituserConfig track by $index" ng-form="jobfileForm">
                    <td><select class="form-control" ng-model="object.key" required ng-change="reValidateJob()"  name="jobFileKey" ng-init="object.form = jobfileForm">

                            <option style="display:none" value=""></option>
                            <option value="value1">value1t</option>
                            <option value="value2">value2</option>
                            <option value="value3">value3</option>
                            <option value="value4">value4</option>
                            <option value="value5">value5</option>
                    </select></td>
                    <td><input type="text" class="form-control" name="jobFileName" ng-model="object.value" required/></td>

                    <td >
                          <button class="btn btn-danger btn-sm" data-style="zoom-in" ng-click="edituserConfig.splice($index,1)" ng-form="jobfileForm" title="Delete">
                                 <span class="glyphicon glyphicon-remove"></span>
                          </button>
                   </td>
                </tr>
                <tr>
                    <td colspan="3">
                        <button class="btn btn-primary btn-sm" ng-click="edituserConfig.push({'key':'','value':''})"    title="Add Value">
                            <span class="glyphicon glyphicon-plus"></span> Add Value
                        </button>
                    </td>
                </tr>
            </tbody>
        </table>
        </div>

请告知我删除按钮是否需要再次为所有行添加日期?有什么好办法吗

好吧,我认为下面的方法应该有效。如果没有,我会要求你创建一个js提琴或plunker

reValidateJob
添加到ng中,单击添加按钮,如下所示

<button class="btn btn-danger btn-sm" data-style="zoom-in" ng-click="edituserConfig.splice($index,1); reValidateJob();" ng-form="jobfileForm" title="Delete">
    <span class="glyphicon glyphicon-remove"></span>
</button> 


希望这有帮助

好吧,我认为下面的方法应该有效。如果没有,我会要求你创建一个js提琴或plunker

reValidateJob
添加到ng中,单击添加按钮,如下所示

<button class="btn btn-danger btn-sm" data-style="zoom-in" ng-click="edituserConfig.splice($index,1); reValidateJob();" ng-form="jobfileForm" title="Delete">
    <span class="glyphicon glyphicon-remove"></span>
</button> 

希望这有帮助

我试图在delete按钮上添加reValidateJob()函数。但它无法解决问题,因为它实际上是在比较当前选定的行和其他行,如果验证失败,则阻止保存数据。但在这里,因为该值正在删除,所以它不会反映到其他行的值中。但它无法解决问题,因为它实际上是在比较当前选定的行和其他行,如果验证失败,则阻止保存数据。但在这里,由于该值正在删除,因此它不会反映到其他行的值。