Не удается очистить входные значения формы в шаблоне ngDialog в Angular

Я использую ngDialog [ https://github.com/likeastore/ngDialog] для создания модального окна и У меня есть базовая форма, которая отправляет запрос POST, когда я нажимаю кнопку. При нажатии той же кнопки я хочу, чтобы ввод формы очищался. Обычно вы можете просто сделать что-то вроде $scope.valueOfNgModel = "";, но в данном случае это не работает. Кроме того, область действия ngDialog такая же, как и область действия контроллера $scope.

Вот экземпляр ngDialog:

$scope.addStudents = function() {
  ngDialog.open({
    template: 'addStudents',
    scope: $scope
  });
};

Вот шаблон ngDialog:

<script type="text/ng-template" id="addStudents">
  <h1> Add Students to Your Class </h1>

  <form ng-model="myForm" ng-submit="addNewStudent(newStudent)">
    <input ng-model="newStudent.firstName" placeholder="First Name">
    <input ng-model="newStudent.lastName" placeholder="Last Name">
    <input ng-model="newStudent.email" placeholder="Email">
    <input ng-model="newStudent.image" placeholder="imageUrl">
    <h3> Note: Student Password by Default will be Firstname.lastname </h3>

    <button class="ngdialog-button 
        ngdialog-button-primary" 
        type="submit">Add Student
    </button>
</form>

</script>

И вот функция, которая запускается при отправке формы (или нажатии кнопки), которую я хочу очистить все поля ввода:

$scope.addNewStudent = function(student) {

  var newUserToAdd = {
    firstName: student.firstName,
    lastName: student.lastName,
    teacher: false,
    email: student.email,
    password: student.firstName + '.' + student.lastName,
    classesBelongTo: [$scope.currentClassId],
    image: student.image
  };

  userService.postNewUser(newUserToAdd)
    .then(function(response) {
      $scope.loggedInUser = response.data;
    })
    console.log("this is $scope.newStudent", $scope.newStudent); //this is undefined - I'm not sure why

    $scope.newStudent = {}; //I tried this to clear it out
    $scope.$apply(); //I tried this to no avail
}

Любая помощь приветствуется!


person Luke Schunk    schedule 09.12.2015    source источник


Ответы (1)


Вы можете дать имя своей форме, а затем позвонить $scope.yourFormName.$setPristine();

Пример: Fiddle

person Coder002    schedule 14.01.2016