2014-02-07 5 views
4
<div ng-repeat="fod in form.order_details"> 
... 
    <td class="control-cell"> 
     <span ng-class="{error: prForm['qty_'+$index].$error.required && showValidationMessages}"> 
      <input type="number" name="{{'qty_' + $index}}" ng-model="fod.qty" ng-change="qtyPerKindCalc($index);" id="{{'qty_' + $index}}" required /> 
      <span ng-show="prForm['qty_'+$index].$error.required && showValidationMessages" class="error-msg">This field required</span> 
     </span> 
    </td> 
... 
</div> 

ngRepeat, где у меня есть обязательное поле. У меня есть объект формы $ scope.prForm - где я вижу $ error. Проблема в имени = "{{'qty_' + $ index}}". В $ scope.prForm я есть поле

{{'qty_' + $index}}: instantiate.c 

но я нужен

qty_0: instantiate.c 

Как я могу иметь хороший {{ 'qty_' + $ индекс}} операции в имени атрибута?

+0

'name =" qty _ {{$ index}} "'? – SET

+1

Решение с динамическими именами: http://stackoverflow.com/a/12044600/1005180 – user1005180

ответ

7

Очень просто:

name="qty_{{$index}}" 

Вот plunk, чтобы увидеть, как это работает.

+0

, тогда у меня есть qty _ {{$ index}}: instantiate.c, но мне нужно qty_0: instantiate.c i 'm use AngularJS v1.2.9 – user1005180

+1

И ваше начальное решение, и это дает 'qty_0'. Проверьте привязку данных. – kubuntu

+0

Я тоже в затруднении. Не вижу проблем. Просто {{$ index}} в имени дайте мне строку '{{$ index}}' - не '0' или '1' ... в моем примере ng-change = "qtyPerKindCalc ($ index);" передается функции good $ index, то есть 0 или 1 ..., но в имени у меня есть строка '{{$ index}}' – user1005180

1

Попробуйте это:

id="qty_{{$index}}" 

:)

0

Директивы приоритеты

Я охотился этой проблемой в течение нескольких часов в настоящее время, и мой текущий анализ является то, что он должен делать с приоритетом директивы. Директива ng-repeat компилируется с приоритетом 1000 (до большинства других), но директива <input> компилируется с приоритетом 0 (по умолчанию). Я думаю, что атрибут "name" оценивается только тогда, когда скомпилирована директива <input>, поэтому другие директивы с приоритетом 0 или выше могут получить несвязанную строку "myName_$index" в названии, которое вы видите. У меня есть идея обходного пути («index» -directive, который компилируется с приоритетом 999, когда доступна индексная переменная из ng-repeat), которую я попробую и, возможно, отчитаюсь.

Смежные вопросы