我有一个这样的模板:
<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>
这是控制器:
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();
}
这是我的意图: 控制器运行submitForm()方法,该方法将HTTP POST请求发送到form.formActionAttr url。
但是使用上面的代码,当调用$ scope.submitForm()时,还没有填充action =“{{form.formActionAttr}}”。
如何解决此问题?
提前致谢: - )
答案 0 :(得分:2)
问题是只有在应用程序真正初始化后才会设置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() });
}