我正在使用Rails服务器(使用Devise进行身份验证)和AngularJS客户端.我已经将Rails生成的表单添加到我的客户端页面,添加了ng-submit Angular指令,如下所示: %= form_for("user", :url = user_session_path,
<%= form_for("user", :url => user_session_path, :html => { "ng-submit" => "doSignIn()" }) do |f| %>
这会生成一个包含action和ng-submit属性的表单,如下所示:
<form accept-charset="UTF-8" action="/users/sign_in" method="post" ng-submit="doSignIn()">
在封闭div中控制器的定义中,我有一个doSignIn函数,此时不执行任何操作:
$scope.doSignIn = function() { console.log($scope.email, $scope.password); };
$scope.email和$scope.password使用ng-model绑定.或者,至少,它们应该是 – 我无法分辨,因为点击提交总是导致被定向到/ users / sign_in.我的印象是使用ng-submit会阻止表单重定向用户.我也尝试使用相同的方法添加ng-click到提交按钮,该方法也使用doSignIn()方法,我甚至尝试将事件传递给它并调用event.preventDefault().似乎没有什么能阻止我被重定向.
我的目标是最终使用AJAX进行登录,但就目前而言,只是证明我可以停止自动重定向会很棒!
I was under the impression that using ng-submit would prevent the form
from redirecting the user.
如果< form>这只是一个正确的假设.没有与之关联的动作属性.当您使用Rails form_for帮助程序时,它会在您指定url属性时为您生成一个操作.
为了防止提交表格,你必须遵循上面的亚伯拉罕P的建议,并返回虚假;你不希望表单提交的地方.