2014-09-30 6 views
1

Я новичок в Angular, и у меня есть простая форма для получения пароля с 1 полем электронной почты и кнопкой отправки. Я хочу очистить форму после того, как форма была отправлена, но я не могу это сделать даже после следующих уроков/ответов в Интернете.Невозможно сбросить форму

Я думаю, что это может быть что-то, что я не понимаю в корне, поэтому, если бы вы могли, пожалуйста, сообщите мне, что было бы здорово.

Я использую Угловое v1.2.22

HTML (signin.forgotpassword.html)

<form name="forgotPasswordForm" class="form" role="form" ng-submit="forgetPasswordSubmit(forgetForm.email)" novalidate > 
    <div> 
     <label for="input-email" class="col-sm-2 control-label">Email</label> 
     <div> 
      <input name="email" ng-model="forgetForm.email" type="email" class="form-control" id="input-email" />    
     </div> 
    </div> 
    <div class="form-group"> 
     <div> 
      <button name="submit" type="submit">Reset Password</button> 
     </div> 
    </div> 
</form> 

Угловое (AuthController)

var forgetPasswordClear = function(){ 
    var defaultForm = { 
     email: '' 
    }; 
    // clear input    
    $scope.forgetForm = defaultForm; // Doesn't clear 
    // set form as pristine 
    $scope.forgotPasswordForm.$setPristine(); // Get Cannot read property '$setPristine' of undefined 
}; 

$scope.forgetPasswordSubmit = function(email){ 
    forgetPasswordClear(); 
}; 

------- --- EDIT ----------

Я не уверен, что это так Моя форма сидит в другом стиле? Моя структура выглядит следующим образом:

HTML

<section data-ng-controller="AuthController"> 
    <div data-ui-view> 
     Some content in there originally 
     <a ui-sref="signin.forgetpassword">Click here to get password</a> 
    </div> 
</section> 

Ui маршрутизатор

.state('signin.forgotpassword', { 
    url: '/signup/forgot-password', 
    templateUrl: 'modules/core/templates/signin.forgotpassword.html' 
}) 
+0

отлично работает для меня (сделал незначительные редактирования, чтобы изменить '$ scope.forgetForm = defaulrForm') http://plnkr.co/edit/fIADIXJxtOjwMPrYZNGz?p=preview Какая версия угловая ..? – PSL

+0

Спасибо @PSL, я пробовал это, но, к сожалению, все тот же ответ. Я использую v1.2.22. – muudless

+0

работает для меня с 22 также. Что вы подразумеваете под тем же ответом? Вы даже проверили демонстрацию? – PSL

ответ

0

Вы установили неправильную модель:

Ваша модель 'forgetForm'

<input name="email" ng-model="forgetForm.email" type="email" class="form-control" id="input-email" ng-pattern="/.+\@.+\..+/" autofocus required /> 

curren т:

$scope.forget = defaultForm; 

должно быть:

$scope.forgetForm = defaultForm; 

EDIT ОБРАТИТЬСЯ новая проблема

Это потому, что это ребенок сфера.

Необходимо использовать излучатели и слушатели событий.

$broadcast - отправляет событие вниз всем дочерним областям, $emit - отправляет событие вверх по иерархии областей.

Подробнее здесь: Working with $scope.$emit and $scope.$on

+0

Спасибо, что указали это, к сожалению, это не имело никакого значения. Я обновил свой вопрос с дополнительной информацией, не могли бы вы посмотреть? – muudless

+0

Спасибо, я еще не пробовал, но я считаю, что это должно быть возможным решением. Нужно ли добавлять контроллер в "signin.forgotpassword.html" для того, чтобы $ broadcast работал? – muudless

Смежные вопросы