在angularjs

时间:2016-09-21 11:51:31

标签: javascript angularjs

我正在开发Angularjs应用程序,我有一个要求,我必须将隐藏变量发送到第三方应用程序。

这些隐藏变量的值应来自数据库。

我使用以下代码动态创建隐藏变量。

<input type="hidden" ng-repeat="hdnvar in models.MyModel.templateVariables" name="{{hdnvar.Key}}" id="{{hdnvar.Key}}" value="{{hdnvar.Value}}" />

当用户点击提交按钮时调用Follwing函数

 $scope.getDetailsForTP = function () {
        $scope.models.MyModel.templateVariables = {};
        $http({
            url: "http://localhost:11149/MyService.svc/TemplateVariable",
            dataType: "json",
            headers: {
                'Content-Type': 'application/json; charset=utf-8'
            }
        }).then(function successCallback(response) {
            if (response.status == 200) {
                $scope.models.MyModel.templateVariables = response.data;
                $scope.submitForm();
            }
            else {
                alert('Error occurred in fetching template variable data');
            }
        }, function errorCallback(response) {
            //do something
        });
    };

    $scope.submitForm = function () {
        document.getElementById("apirequest").submit();
    };

隐藏变量在页面上正确呈现,但是当我检查fiddler时,我找不到提交的隐藏变量。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

您在更新templateVariables后立即提交表单。渲染html元素需要一些时间。

因此您需要在延迟一段时间后提交表格。

$scope.models.MyModel.templateVariables = response.data;
$timeout($scope.submitForm, 1000)  // submit form after 1 second