2017-01-05 1 views
1
<form name="inputdata" ng-submit="saveStudentInfo(student)"> 
    <div layout="row"> 
     <md-input-container flex="50"> <label>First 
      Name</label> <input required name="studentFName" 
      ng-model="student.studentFName"> 
     <div ng-messages="inputdata.studentFName.$error"> 
      <div ng-message="required">This is required.</div> 
     </div> 
     </md-input-container> 

     <md-input-container flex="50"> <label>Middle 
      Name</label> <input name="studentMName" ng-model="student.studentMName"> 
     </md-input-container> 
     <md-input-container flex="50"> <label>Last 
      Name</label> <input required name="studentLName" 
      ng-model="student.studentLName"> 
     <div ng-messages="inputdata.studentLName.$error"> 
      <div ng-message="required">This is required.</div> 
     </div> 
     </md-input-container> 
    </div> 
</form> 

Das sind die Formularkomponenten.

$scope.inputdata.$setPristine(); 

Wenn ich diesen Code in der Steuerung zu schreiben, es zeigt

$ scope.inputdata. $ SetPristine keine Funktion ist.

Irgendwelche Vorschläge ?? Was soll ich machen ?
Angular Version 1.6.1

Antwort

3

Diese Methode setzt die $pristine Zustand wahr Form, die $dirty Zustand false, entfernt die ng-dirty Klasse und fügt die ng-pristine Klasse. Darüber hinaus setzt es den $submitted-Status auf false.

So funktioniert es nicht für einzelne Formularelement. Tun Sie es stattdessen für form.

+0

Aber ich habe keine ng-Dirty-Tag geschrieben. Ich habe ** $ scope.formName. $ SetPristine(); ** in die js-Seite geschrieben, um die Formulardaten zu löschen. Bitte helfen Sie mir, die Daten zu löschen? –

+0

'$ scope.data = {};' // um das Formular mit einem neuen leeren Objekt zu initialisieren. '$ scope.formName. $ SetPristine (true);' // setze das Formular in den ursprünglichen Zustand $ scope.formName. $ SetUntouched (true); '// Um ​​das Formular unberührt zu lassen. '$ scope.formdata = angular.copy ($ scope.data);' // Das Formular mit neuer Instanz des Objekts neu erstellen. – SaiUnique

3

Sie können $setPristine nicht an einem Eingang verwenden.

Es sollte auf einem form verwendet werden.

+0

Dann schlagen Sie mir vor, wie Sie die Daten in einem Formular löschen. Ich habe geschrieben ** $ scope.formName. $ SetPristine(); ** –

+0

Wenn Sie ** das Formular löschen möchten, dann können Sie verwenden: 'angular.copy ({}, $ scope.formName); ' – Mistalis