2016-09-21 6 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 service를 사용하여 데이터를 게시하고 모달 데이터 (배열)를 요청 데이터 필드에 전달할 수 있습니다. –

+0

의견을 보내 주셔서 감사합니다. 어떻게 할 수 있습니까? –

답변

1

templateVariables를 업데이트하는 즉시 양식을 제출하고 있습니다. html 요소를 렌더링하는 데 시간이 걸립니다.

약간 지연된 후에 양식을 제출해야합니다.

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

지연을 추가하면 문제가 해결됩니다. 그러나 HTML 요소를 렌더링하는 데 1 초 이상 걸릴 수 있습니다. HTML 요소를 렌더링 한 후에 만 ​​양식을 제출할 수있는 방법이 있습니까? –

관련 문제