ng-submit以角形形式调用两次

时间:2017-11-18 07:32:39

标签: javascript angularjs forms

我已就这个问题经历了几个问题,但没有一个问题解决了我的问题

我正在使用一个表单,其中两个提交类型按钮调用相同的功能。一个按钮在ng-click上发送一个额外的变量。当我提交我的函数被调用两次。

我正在使用this question的第二个答案中告知的方法(主要是投票)

我没有将控制器作为ng-controller包含在HTML

<form ng-submit="SaveContent(Form)">
    <button type="submit">Save</button>
    <button type="submit" ng-click="Data.IsSent = true">Save & Send</button>
</form>

如何处理这个问题?

2 个答案:

答案 0 :(得分:1)

角度形式docs将其指定为

  

如果表单有一个或多个输入字段和一个或多个按钮或   输入[type = submit]然后点击输入任何输入字段   触发第一个按钮上的click处理程序或输入[type = submit]   (ngClick)和封闭表单上的提交处理程序(ngSubmit)

我在下面的示例中插入了您的代码,其行为与文档中指定的完全相同,并且在提交表单时只执行一次提交(第一次)

&#13;
&#13;
angular.module("app",[]).controller("myCtrl",function($scope){

$scope.Data ={};
$scope.Data.IsSent = false;
$scope.SaveContent = function(form){
if($scope.Data.IsSent){
  alert('submitted- and ngclick is invoked');
  }else{
  alert('submitted');
  }
  $scope.Data.IsSent = false;
};

});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app="app" ng-controller="myCtrl">

<form ng-submit="SaveContent(Form)">
    <input type="text" name="text1"/>
    <button type="submit">Save</button>
    <button type="submit" ng-click="Data.IsSent = true">Save & Send</button>
</form>

</div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

我遇到了同样的问题,花了我5天的时间才弄清楚。不要在表单的开始标记中添加(ngSubmit)。