Javascript 从Angular指令以编程方式提交表单

Javascript 从Angular指令以编程方式提交表单,javascript,angularjs,forms,Javascript,Angularjs,Forms,在我的Angular 1.5.X应用程序中,我有一个带有以下模板的指令 <form id="pdfDownloadForm" name='pdfDownloadForm' method="POST" action="{{ downloadUrl }}"> <input type="hidden" name="data" value="" /> <button type="button" ng-c

在我的Angular 1.5.X应用程序中,我有一个带有以下模板的指令

<form id="pdfDownloadForm"
      name='pdfDownloadForm'
      method="POST"
      action="{{ downloadUrl }}">          

  <input type="hidden" name="data" value="" />   
  <button type="button" ng-click="submit()">Submit</button>
</form>
然后在提交表单之前,将从远程服务检索到的值分配给
scope.dataValue

我尝试用编程方式提交表单

scope.submit = function () {    
    $('#pdfDownloadForm').submit();
} 
但这会导致以下错误:

错误:[$rootScope:inprog]$apply已在进行中

提交

应该是

提交



那么在你编辑完你的文章后,这不是解决办法吗?您试过了吗?

因为您使用的是Angular 1.5+,所以没有理由使用scope-要么使用
controllerAs
语法,要么最好使用

我将通过中断第一次提交调用并填充隐藏字段来实现您的任务。任何后续提交都是允许的

//内部控制器
提交(事件){
如果(!this.dataValue){
event.preventDefault();
this.initializeData();
}
}
初始化数据(){
$http.get('/my data source')。然后((响应)=>{
this.dataValue=response.data.value;
此.pdfDownloadForm.submit();//需要
});

}
尝试
$timeout(function(){$('#pdfDownloadForm').submit();})
以消除错误。记住注入
$timeout
服务;为什么要使用angular中绑定的函数来调用jquery函数?当然这不是
$scope.submit
函数所做的唯一一件事吗?@Claies不是,但我只想包含与我的问题相关的代码。我觉得您在以错误的方式处理此问题。在angular中,当您在提交之前有其他任务要做时,执行此操作的标准方法是根本不提交表单。相反,使用控制器函数来处理处理,然后使用
$http
服务提交数据。我认为我不能使用
controllerAs
语法,因为我没有控制器-我的指令只有一个链接函数。感谢您提及组件,我将详细阅读它们。
scope.submit = function () {    
    $('#pdfDownloadForm').submit();
}