在AngularJS中提交表格?

时间:2018-01-16 22:00:24

标签: javascript angularjs forms

我有一个这样的模板:

<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}}”。

如何解决此问题?

提前致谢: - )

1 个答案:

答案 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() });
}