2017-01-24 2 views
0

Я стараюсь много решений, чтобы предотвратить мою отправку формы после validataion с помощьюНевозможно предотвратить отправку формы в угловых js?

ng-submit="login_form.$valid" 

Но она по-прежнему представить. Это мой код. http://codepen.io/ryantran/pen/bgWXjy

+0

Как Ваша форма даже отправляется? Используете ли вы функцию в своем контроллере для этой цели? –

ответ

6

Поскольку вы определили действие и метод в своей форме, независимо от того, что вы делаете в угловом, оно будет отправлено.

Если вы хотите обработать валидацию угловыми, вы должны удалить их и использовать $ http или $ resource, чтобы ваш сервер мог вызвать ваш метод отправки.

+0

Ссылка на соответствующую документацию ~ https://docs.angularjs.org/api/ng/directive/form#submitting-a-form-and-preventing-the-default-action – Phil

-1

ng-submit выполняет функцию вызова, когда вы нажимаете кнопку отправки. то, как вы используете, не будет работать. Для того, чтобы сделать его работу, вы можете использовать его как:

<form name="loginForm" novalidate ng-submit="loginForm.$valid ? login() : ''"> 

Использование LoginForm $ действует.? Логин(): «»» это условие гарантирует, что ваша функция будет вызываться только тогда, когда форма действует

И в контроллере:.

$scope.login = function() { 
    if ($scope.loginForm.$valid) { //don't need to check validation here again because condition in ng-submit is doing this for you, only to show. 
    authService.login(params).then(function(response) { 
      //do what ever you want to, with you response 
     }, function(error) { 
      // do something 
      } 
     }); 
    } 

сделать запрос все HTTP в службе Убедитесь $. HTTP впрыскивается В authService сделать функцию, как показано ниже:..

this.login = function (params) { 
     return $http({ 
      method: "POST", 
      url: serviceURI.loginURI, 
      data: params, 
      headers: { 'Content-Type': 'application/json' } 
     }); 
    }; 

serviceURI где я сохранить все Api URLs как константа