如何在提交之前更新AngularJS中的隐藏表单数据?
如何在提交之前更新AngularJS中的隐藏表单数据?
我已经将我的模型变量绑定到表单中的一些隐藏输入字段中。\n当用户点击提交按钮时,我尝试通过更新相应的绑定模型变量来更新这些字段,但它们没有改变(我注意到当在服务器上转储请求时,我总是收到旧数据),同时我注意到当我使用普通文本输入而不是隐藏输入时,一切都正常工作。\n这是我的代码:\n表单:\n
\n控制器:\n
var app = angular.module(... // bla bla app.controller('MyController', ['$scope', ctrlDef]); function ctrlDef($scope) { $scope.extra = {}; $scope.extra.token = ''; $scope.extra.filters = ''; $scope.updateForm = function() { $scope.extra.token = 'test1'; $scope.extra.filters = 'test2'; }; }
问题的原因是,使用标准的HTML表单属性(method,action等)时,ngSubmit事件不一定会在POST请求之前被可靠地执行。解决方法是使用$http服务来发送请求,这样也可以异步进行,不需要像目前这样使用隐藏的iframe。
代码中的控制器定义了一个名为MyController的控制器。在这个控制器中,定义了$scope.extra对象,它具有token和filters属性。updateForm函数用来更新表单中的隐藏数据,并通过$http.post方法发送POST请求。在请求的回调函数中,可以对响应进行处理。
文章中还提到了不想使用XHR调用的原因,以及使用隐藏iframe的目的是在同一页中下载文件。同时也提到了如果有办法在JavaScript中下载文件而不需要使用外部库或弹出窗口,那么XHR是可以接受的。
最后,作者对于不使用外部库的情况下如何实现文件下载表示不确定,并且对自己的回答无法提供更多帮助表示抱歉。