AngularJS: la liste de toutes les erreurs de forme

Arrière-plan:
Je suis actuellement en train de travailler sur une application avec des onglets; et je voudrais la liste des champs /les articles que l'échec de la validation, pour diriger l'utilisateur pour rechercher des erreurs dans l'onglet de droite.

J'ai donc essayé de tirer parti de form.$error de le faire; pourtant, je ne suis pas entièrement le faire fonctionner.

Si la validation des erreurs se produisent à l'intérieur d'un ng-repeat, par exemple:

<div ng-repeat="url in urls" ng-form="form">
  <input name="inumber" required ng-model="url" />
  <br />
</div>

Vide des valeurs form.$error contenant les éléments suivants:

{ "required": [ 
{ 
"inumber": {} 
}, 
{ 
"inumber": {} 
} 
] }

D'autre part, si la validation des erreurs se produisent en dehors de cette ng-repeat:

<input ng-model="name" name="iname" required="true" />

La form.$error objet contient les éléments suivants:

{ "required": [ {} ] }

encore, je préfère attendre le suivant:

{ "required": [ {'iname': {} } ] }

Toutes les idées sur la raison pour laquelle le nom de l'élément est manquant?

L'exécution d'un plunkr peuvent être trouvés ici:
http://plnkr.co/x6wQMp

  • J'ai remarqué l'autre jour. Il ne fait pas de sens pour moi, parce que vous pouvez inspecter form.iname.$error et obtenir les valeurs correctes. Ce que j'ai fait a l'aide de form.$valid de vérifier la validité et activer le bouton "soumettre" à la place.
  • Salut Ed, merci beaucoup pour votre réponse. Je suis d'accord, mais je voudrais indiquer à l'utilisateur le contrôle qui est de ne pas valider. Le formulaire est dans un des onglets de la vue, de sorte qu'il est facile d'oublier que vous ne pouvez pas l'enregistrer car il y a une erreur de validation à l'intérieur d'une répétition dans un onglet que vous sont actuellement pas de visualisation. (J'espère que mon explication était assez bon à suivre :))
  • Ouais je suis d'accord il est bon de montrer à l'utilisateur ce qui est valable et ce qui ne l'est pas. Une option est que vous pouvez avoir le texte de l'erreur dans <span> balises pour toutes les erreurs possibles et l'utilisation ng-show="form.fieldName.$error.required" par exemple. Vous pouvez ensuite soit inline ceux avec les entrées, ou de les placer près du bouton "soumettre". Ce n'est certainement pas idéal, mais - je me demande si la déserte $error valeur est un bug angulaire?
  • Je crois $erreur est remplie, vous ne pouvez pas faire un dump comme JSON bien. Jetez un oeil ici: plnkr.co/modifier/Z47J2W?p=preview Les types d'erreurs peuvent tous être réitéré.
  • c0bra: merci, je vais essayer de suivre votre solution, on dirait qu'il fait exactement ce dont j'ai besoin.
  • michael: voir ma réponse sur cette question: stackoverflow.com/questions/12044277/... cette méthode permettra d'éviter la répétition de ng-formes d'écraser les uns les autres
  • vous devez soumettre une réponse complète et nous allons tous les +1

InformationsquelleAutor michael | 2014-03-11