Wie man dynamisch erzeugte Eingaben mit ng-repeat, ng-show (angular) validiert

Ich habe eine Tabelle, die erstellt wird, mithilfe von ng-repeat. Ich möchte hinzufügen, um die Validierung zu jedem element in der Tabelle. Das problem ist, dass jede Eingabe die Zelle hat den gleichen Namen wie die Zelle oberhalb und unterhalb. Ich habe versucht, verwenden Sie die {{$index}} Wert, um den Namen der Eingänge, aber trotz der string-Literale in HTML erscheinen, korrigieren, es funktioniert jetzt.

Hier ist mein code jetzt:

<tr ng-repeat="r in model.BSM ">
   <td>
      <input ng-model="r.QTY" class="span1" name="QTY{{$index}}" ng-pattern="/^[\d]*\.?[\d]*$/" required/>
      <span class="alert-error" ng-show="form.QTY{{$index}}.$error.pattern"><strong>Requires a number.</strong></span>
      <span class="alert-error" ng-show="form.QTY{{$index}}.$error.required"><strong>*Required</strong></span>
   </td>
</tr>

Ich habe versucht, das entfernen der {{}} aus dem index, aber das funktioniert auch nicht. Wie jetzt, die Validierung der Eigenschaft der Eingabe funktioniert, aber die Fehlermeldung wird nicht angezeigt.

Jemand irgendwelche Vorschläge?

Edit: neben den großen Antworten, hier ein blog-Artikel, deckt dieses Problem im detail: http://www.thebhwgroup.com/blog/2014/08/angularjs-html-form-design-part-2/

Kommentar zu dem Problem - Öffnen
Für diejenigen, die dies Lesen in 2015... den top gestimmt, die Antwort ist NICHT die richtige niemand mehr. Suchen niedrigeren. 🙂 Kommentarautor: Will Strohl
Dieser scheint, die "für 2015" Antwort @WillStrohl spricht. Kommentarautor: osiris
Was ist die richtige Etikette SO hier? Sollte ich verlassen Sie die akzeptierten Antworten, da war es damals richtig, oder akzeptieren Sie die richtige Antwort für heute? Nur wollen das scheinbar beliebte thread hilfreich, um neue Besucher. Kommentarautor: PFranchise
@PFranchise, weiß ich nicht, aber ich denke, dass ein sichtbarer Hinweis über das es helfen könnte. Vielleicht als edit zu deiner Frage, also die Notiz, wo mehr Leute es sehen können. Kommentarautor: osiris

InformationsquelleAutor der Frage PFranchise | 2012-08-20

Schreibe einen Kommentar