Angularjs resetta forma

Ho una function di ripristino in angolo per cancellare tutti i campi in una forma. Se faccio qualcosa di simile:

<a href="#" ng-click="resetForm()">reset</a> $scope.resetForm = function() { $scope.someForm = {}; } 

Tutto funziona bene. Ma voglio utilizzare questa function per più forms sul sito. Se passa l'object module come:

 <a href="#" ng-click="resetForm(someForm)">reset</a> $scope.resetForm = function(form) { $scope.form = {}; } 

Allora non functionrà. Può qualcuno spiegarmi perché questo accadrebbe?

Hai 2 problemi:

  • Non accedi alla variabile passata, ancora accedete al someForm dell'ambito corrente.
  • Quando si passano il parametro alla function, viene passato per riferimento. Anche quando si utilizza form = {} , non funziona perché cambia solo il riferimento del parametro , non il riferimento del passato in someForm .

Provare:

 $scope.resetForm = function(form) { //Even when you use form = {} it does not work form.fieldA = null; form.fieldB = null; ///more fields } 

O

 $scope.resetForm = function(form) { //Even when you use form = {} it does not work angular.copy({},form); } 

invece di:

 $scope.resetForm = function(form) { $scope.form = {}; } 

Nel tuo tuffo, vedo che non stai separando la vista dal model. Dovresti farlo per la separazione delle preoccupazioni e per evitare problemi che potrebbero verificarsi quando si eliminano tutti i campi (inclusi i campi dell'object module DOM).

 <form name="form2" ng-controller="SecondController"> <label for="first_field">First Field</label> <input ng-model="form2Model.first_field" /> <br /> <label for="second_field">Second Field</label> <input ng-model="form2Model.second_field" /> <br /> <a href="#" ng-click="secondReset(form2Model)">Reset the form</a> </form> 

http://plnkr.co/edit/x4JAeXra1bP4cQjIBld0?p=preview

È inoltre ansible:

 form.fieldA = undefined; 

Funziona ottimamente per pulsanti e caselle di controllo.