2016-09-21 5 views
0

Ich arbeite an Angularjs Anwendung, ich habe eine Anforderung, wo ich versteckte Variablen an eine Anwendung von Drittanbietern senden muss.Erzeugt versteckte Felder in angularjs

Der Wert dieser versteckten Variablen sollte aus der Datenbank kommen.

Ich benutze folgenden Code, um versteckte Variablen dynamisch zu erstellen.

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

Follwing Funktion aufgerufen wird, wenn der Benutzer auf die Schaltfläche korrekt auf einer Seite

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

Versteckte Variablen klickt einreichen gemacht, aber wenn ich Fiedler überprüfen kann ich nicht die verborgenen Variablen abgegeben finden.

Kann mir bitte jemand helfen?

+1

Warum senden Sie Ihr Formular ein. Sie können Ihre Daten mit dem $ http-Service posten und Ihre modalen Daten (Array) im Datenfeld der Anfrage übergeben. –

+0

Danke für Ihren Kommentar. Könnten Sie bitte ein Beispiel dafür geben? –

Antwort

1

Sie senden das Formular, sobald Sie templateVariables aktualisiert haben. Es dauert einige Zeit, um HTML-Elemente zu rendern.

so müssen Sie das Formular nach einiger Verzögerung übermitteln.

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

Das Hinzufügen einer Verzögerung löst das Problem. Es kann jedoch mehr als eine Sekunde dauern, HTML-Elemente zu rendern. Gibt es eine Möglichkeit, das Formular erst nach dem Rendern von HTML-Elementen einzureichen? –

Verwandte Themen