【问题标题】:ng-submit called twice in angular formng-submit 以角度形式调用两次
【发布时间】:2018-05-02 00:01:28
【问题描述】:

我已经解决了几个关于这个问题的问题,但没有一个能解决我的问题

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

我正在使用this question的第二个答案中告诉的方法(大部分投票)

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

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

如何处理这个问题?

【问题讨论】:

  • 没有足够的信息来回答。
  • @dfsq 还需要什么信息?
  • 你指的问题没有两个type='submit'的按钮。一个是简单的按钮。尝试改变它。
  • 在硬刷新浏览器并重新启动代码后,代码运行良好。

标签: javascript angularjs forms


【解决方案1】:

角度形式docs指定为

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

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

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;
};

});
<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>

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我认为这个答案是不完整的。如果删除了ng-submit,则需要将该功能移至按钮。您能否分享一些示例代码以使此答案更有用?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多