2017-12-30 32 views
1

Ich benutze Ionic und ich verwende ng-repeat für mehrere Formulare. Ich hätte gerne eine separate Validierung für jedes Formular, aber ich bin mir nicht sicher, wie ich das schaffen könnte.Separate Validierung auf ng-repeat

Der Code:

<ion-list ng-if="question.QuestionType == 'QuestionRadio'"> 
    <ion-radio ng-repeat="choice in question.Answers" 
       ng-model="vm.answer[choice.AnswerId]" 
       name="{{question.QuestionId}}" 
       ng-required="vm.answer" 
       ng-required="!vm.someSelected(vm.answer)"> 
     {{choice.Text}} 
    </ion-radio> 
</ion-list> 

Der Code Fehlermeldung anzuzeigen:

<div class="form-errors" 
     ng-show="testForm[question.QuestionId].$error.required" 
     ng-messages="testForm[question.QuestionId].$error" 
     ng-messages-include="shared/form-errors.html" 
     ng-if="question.QuestionType == 'QuestionRadio'"> 
</div> 

Die Funktion Validierungsarbeiten zu machen, aber nicht für separate Formen:

vm.someSelected = function (object) { 
      return Object.keys(object).some(function (key) { 
      return object[key]; 
      }); 
     } 

Die Kombination der Code oben wird das Formular Validierung haben, aber wenn ein Formular passiert, werden alle von ihnen übergeben, was ein Unsch ist Ergebnis. Wie mache ich es so, dass ein Formular eine einzigartige Möglichkeit hat, die Validierung zu bestehen?

Antwort

1

Duplizieren Attribute auf einem Element, werden ignoriert:

<ion-list ng-if="question.QuestionType == 'QuestionRadio'"> 
    <ion-radio ng-repeat="choice in question.Answers" 
       ng-model="vm.answer[choice.AnswerId]" 
       name="{{question.QuestionId}}" 
       ̶n̶g̶-̶r̶e̶q̶u̶i̶r̶e̶d̶=̶"̶v̶m̶.̶a̶n̶s̶w̶e̶r̶"̶ 
       ̶n̶g̶-̶r̶e̶q̶u̶i̶r̶e̶d̶=̶"̶!̶v̶m̶.̶s̶o̶m̶e̶S̶e̶l̶e̶c̶t̶e̶d̶(̶v̶m̶.̶a̶n̶s̶w̶e̶r̶)̶"̶ 
       ng-required="vm.answer[choice.AnswerId] && !vm.someSelected(vm.answer)"> 
     {{choice.Text}} 
    </ion-radio> 
</ion-list>