我有一个这样的模板:
<div><form id="appForm" method="POST" action="{{form.formActionAttr}}">
<table class="form-table">
<tr>
<td>
<input name="input1" type="hidden" value="{{form.input1}}"/>
</td>
</tr>
<tr>
<td>
<input name="input2" type="hidden" value="{{form.input2}}"/>
</td>
</tr>
</table>
</form></div>
这是 Controller :
function SamlFormController($scope, $sce, metadataService) {
$scope.form = {};
$scope.form.formActionAttr = $sce.trustAsResourceUrl('some.url');
$scope.form.input1 = 'input1';
$scope.form.input2 = 'input2';
$scope.submitForm = function() {
document.getElementById('appForm').submit();
};
$scope.submitForm();
}
这是我的意图: Controller 运行submitForm()方法,该方法将HTTP POST请求发送到form.formActionAttr url。
但是使用上面的代码,当调用 $scope.submitForm() 时,action="{{form.formActionAttr}}"尚未填充。
如何解决这个问题?
提前致谢:-)
最佳答案
问题是只有在应用程序真正初始化后才会设置 url。所以你需要把改变推到后期。您可以使用 $timeout 服务轻松地做到这一点:
function SamlFormController($scope, $sce, $timeout, metadataService) {
$scope.form = {};
$scope.form.formActionAttr = $sce.trustAsResourceUrl('some.url');
$scope.form.input1 = 'input1';
$scope.form.input2 = 'input2';
$scope.submitForm = function() {
document.getElementById('appForm').submit();
};
$timeout(function() { $scope.submitForm() });
}
关于javascript - 在 AngularJS 中提交表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48290523/