Angular + Jquery - 程序化表单提交会导致重定向

Yar*_*ron 2 javascript forms jquery angularjs

我正在尝试编写一个包含ngsSubmit的表单.按Enter并单击提交按钮按预期工作(调用我为ng-submit提供的方法,就是这样).

但是,在某些情况下,我还希望在实际提交之前进行一些预处理,因此我尝试使用JQuery的submit()以编程方式触发提交.

这会导致ng-submit处理程序触发,并且还会发送通常刷新整个页面的表单.

任何想法如何绕过这个或为什么会发生???

这里的示例("点击我"显示不良行为) http://jsfiddle.net/Yf5tf/

<form ng-app="myApp" ng-submit="submitMe()" ng-controller="myCtrl">
    <input type="text" ng-model="value"></input>
    <input type="submit" value="Go!"></input>
    <div ng-click="progSubmit()">click me</div>
</form>

angular.module('myApp', [])
.controller('myCtrl', function($scope, $element, $timeout) {
    $scope.submitMe = function() { alert ("hi"); };
    $scope.progSubmit = function() {
        $timeout(function() {
            var inputElem =  $element.find("input");
            angular.element(inputElem[0].form).submit();
          }, 0);
    };
});
Run Code Online (Sandbox Code Playgroud)

谢谢你,亚伦

Yar*_*ron 11

所以...如果有人有同样的问题.

解决方案是使用JQuery触发提交.理想情况下它将是:

angular.element($scope.inputElem[0].form).trigger('submit');
Run Code Online (Sandbox Code Playgroud)

但是,Angular中存在一些错误,因此我发现的当前工作是:

angular.element($scope.inputElem[0].form).find('[type=submit]').trigger('click');
Run Code Online (Sandbox Code Playgroud)

干杯.