我已就这个问题经历了几个问题,但没有一个问题解决了我的问题
我正在使用一个表单,其中两个提交类型按钮调用相同的功能。一个按钮在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>
如何处理这个问题?
答案 0 :(得分:1)
角度形式docs将其指定为
如果表单有一个或多个输入字段和一个或多个按钮或 输入[type = submit]然后点击输入任何输入字段 触发第一个按钮上的click处理程序或输入[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;
};
});
&#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;
答案 1 :(得分:0)
我遇到了同样的问题,花了我5天的时间才弄清楚。不要在表单的开始标记中添加(ngSubmit)。