2016-09-21 3 views
0

私はAngularjsアプリケーションで作業しています。私は第三者アプリケーションに隠れ変数を送信する必要があります。angularjsに隠しフィールドを動的に作成

これらの隠し変数の値は、データベースから取得する必要があります。

次のコードを使用して、隠し変数を動的に作成しています。ユーザーがボタンを

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

隠し変数を提出する上でクリックしたページに正しくレンダリングされているが、私はシオマネキをチェックするときに私が提出した隠された変数を見つけることができないとき

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

Follwing関数が呼び出されます。

誰かが助けてくれますか?

+1

なぜフォームを送信していますか? $ httpサービスを使用してデータを投稿し、リクエストのデータフィールドにモーダルデータ(配列)を渡すことができます。 –

+0

ご意見ありがとうございます。それを行う例を教えてください。 –

答えて

1

templateVariablesを更新するとすぐにフォームを送信します。 html要素をレンダリングするのに時間がかかります。

ですので、遅れてフォームを送信する必要があります。

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

遅延を追加するとこれが解決されます。しかし、HTML要素をレンダリングするのに1秒以上かかることがあります。 HTML要素のレンダリング後にフォームを送信できる方法はありますか? –

関連する問題