2013-04-20 15 views
6

Mam problem z resetowaniem pól formularza po przesłaniu w AngularJS (v1.1.3). Oto fragment tego, co próbuję zrobić:Formularz resetowania po przesłaniu w AngularJS

HTML

<form name="addMemberForm"> 
    <input name="name" type="text" placeholder="Jon Doe" ng-model="member.name" required/></td> 
    <a class="btn btn-primary" ng-click="createMember(member)" ng-disabled="addMemberForm.$invalid"><i class="icon-plus"></i></a> 
</form> 

JS

$scope.createMember = function(member) { 
    var membersService = new Members(member); 
    membersService.$create(function(member) { 
     $scope.members.push(member); 
     $scope.addMemberForm.reset(); //TypeError: Object #<FormController> has no method 'reset' 
    }); 
}; 

Czy istnieje inny sposób, aby przywrócić elementy formularza?

+1

Ustaw member.name zakres var do null lub pusty ciąg (member.name = "") – tschiela

+0

Hm to nie działa. Próbuję zresetować wszystkie elementy wejściowe w formularzu, a nie dane w zakresie. – jesal

+0

, ale resetowanie zakresu jest powszechną drogą do tego. Lub widok nie jest zsynchronizowany z modelem. – tschiela

Odpowiedz

5

Wyliczyłem to dzięki komentarzowi @ tschiela. Musiałem to zrobić:

$scope.createMember = function(member) { 
    var membersService = new Members(member); 
    membersService.$create(function(member) { 
     $scope.members.push(member); 
     $scope.member = ''; 
    }); 
}; 
+0

To samo dla mnie zadziałało. Po prostu ustawię $ scope.MyObject na null w mojej metodzie przesyłania formularza. –

2

Po prostu weź domyślną wartość formularza.

formularz HTML

<form novalidate id="paperForm" class="form-horizontal" name="formPaper"> 
<div class="form-group"> 
<label class="col-sm-3 control-label" for="name"> 
    Name 
</label> 
<div class="col-sm-8"> 
    <input type="text" id="name" placeholder="Please Enter Name" class="form-control" ng-model="paper.name" ng-name="name" required> 
</div> 

<label class="col-sm-3 control-label" for="name"> 
    Department 
</label> 
<div class="col-sm-8"> 
    <input type="text" id="department" placeholder="Please Enter Department" class="form-control" ng-model="paper.department" ng-name="department" required> 
</div> 

</div> 

<button type="button" class="btn btn-default" ng-click="reset(paper)">Reset</button> 

</form> 

zestaw kod resetu wewnątrz kontrolera

var deafualtForm = { 
name : '', 
department : '' 
} 

$scope.reset= function(paper) { 
$scope.paper = angular.copy(deafualtForm); 
} 
Powiązane problemy