带有ng-repeat的AngularJS高亮表包含一个下拉列表

时间:2019-05-10 16:33:40

标签: javascript angularjs

我的ng-repeat中有一些控件。其中之一是下拉菜单,如下所示。在按钮上单击“我正在验证必填字段”,并要突出显示出现错误的表格单元。  对于下拉菜单,我无法突出显示表格单元格或控件。代码如下。

<tr ng-repeat="data in myData">
    <td>
        <select class="form-control" ng-required="true" ng-options="env for env in types" ng-model="data.type">                 
            <option value="">Select</option>
        </select>
    </td> 
 </tr>

但是对于文本框,我可以在下面进行操作,并且它会突出显示:

<td ng-class="{ 'has-error': myForm['input_' + {{$index}}].$invalid && (myForm['input_' + {{$index}}].$touched || myForm.$submitted) }">
    <input type="text" name="input_{{$index}}" required ng-model="data.input" class="form-control" />
  </td>

上面的代码在文本框上工作正常,我可以看到红色突出显示,但是如果我使用与TD相同的代码,则无法正常工作。

请输入任何内容。

2 个答案:

答案 0 :(得分:1)

您的select标签需要一个名称。 AngularJS中的验证状态要求form元素具有名称:

<td ng-class="{ 'has-error': myForm['input_select_' + {{$index}}].$invalid && (myForm['input_select_' + {{$index}}].$touched || myForm.$submitted) }">
  <select class="form-control" 
          name="input_select_{{$index}}"
          ng-required="true" 
          ng-options="env for env in types" 
          ng-model="data.type">                 
    <option value="">Select</option>
  </select>
</td> 

答案 1 :(得分:1)

尝试在函数中使用$ index。

<tr ng-repeat="data in myData track by $index">
    <td>
        <select class="form-control" style="color:{{highlight[$index]}};" ng-required="true" ng-options="env for env in types" ng-model="data.type" ng-change="colorchange($index)">                 
            <option value="">Select</option>
        </select>
    </td> 
 </tr>