AngularJs Выберите в ng-repeat выберите имя с $index не распознанным

У меня есть оператор select в ng-repeat. Я использую значение $index, чтобы получить уникальное имя для каждого из вариантов. Затем я использую это имя для проверки правильности. Проверки работают хорошо, когда они не повторяются, но когда внутри повтора красная рамка вокруг требуемого выбора не отображается.

Вот скрипка.

Буду признателен за любую оказанную помощь.

PS нажмите на знак +, чтобы добавить больше строк в скрипку.

http://jsfiddle.net/angularNovice/T47CG/6/

<form name="testForm">
   <select name="selectOutside"      
      class="span2" ng-model="plugin.selectedDevice" 
      ng-options="item.ID as item.Title for item in devices" ng-required="true">
      <option style="display:none" value=""></option>
   </select>
   <span class="error" ng-show="testForm.selectOutside.$error.required">
      *
   </span><br>
   <a class="btn" ng-click="addPlugin()">
   <i class="glyphicon glyphicon-plus"></i></a>

   <table>
      <tr ng-repeat="plugin in plugins">
         <td><strong>{{$index}}</strong>
         </td>
         <td>
            <select name="selectInside{{$index}}" class="span2"     
                ng-model="plugin.selectedDevice" 
                ng-options="item.ID as item.Title for item in devices" ng-required="true">
                <option style="display:none" value=""></option>
            </select>
            <span class="error"
                ng-show="testForm.selectInside{{$index}}.$error.required">
                 *
            </span>
         </td>
     </tr>
  </table>
</form>   

person noviceUser    schedule 13.12.2013    source источник
comment
Можете ли вы попробовать выражение testForm['selectInside' + $index].$error.required   -  person Chandermani    schedule 13.12.2013
comment
Нет, это не сработало.   -  person noviceUser    schedule 13.12.2013
comment
Вы можете увидеть ошибку проверки, когда нажмете кнопку отправки. См. jsFiddle jsfiddle.net/T47CG/12.   -  person Jayantha Lal Sirisena    schedule 13.12.2013


Ответы (1)


Проблема заключается в том, что свойство имени, которое вы создаете внутри ng-repeat, не создает правильное свойство в переменной контроллера формы. В вашем случае это

{"selectOutside":{},"selectInside{{$index}}":{}}

Вы можете объявить подчиненную форму при каждом повторении, а затем использовать то же имя переменной и проверять наличие ошибок.

Подробнее см. в этом сообщении http://www.benlesh.com/2013/03/angular-js-validating-form-elements-in.html

person Chandermani    schedule 13.12.2013