Für einen bestimmten Anwendungsfall muss ich ein einzelnes Formular auf "alte Weise" einreichen. Das heißt, ich benutze ein Formular mit action = "". Die Antwort wird gestreamt, daher lade ich die Seite nicht neu. Ich bin mir völlig bewusst, dass eine typische AngularJS-App kein Formular auf diese Weise senden würde, aber bisher habe ich keine andere Wahl.
Trotzdem habe ich versucht, einige versteckte Felder aus Angular zu füllen:
<input type="hidden" name="someData" ng-model="data" /> {{data}}
Bitte beachten Sie, dass der korrekte Wert in den Daten angezeigt wird.
Das Formular sieht aus wie ein Standardformular:
<form id="aaa" name="aaa" action="/reports/aaa.html" method="post">
...
<input type="submit" value="Export" />
</form>
Wenn ich auf Senden drücke, wird kein Wert an den Server gesendet. Wenn ich das Eingabefeld in "Text" ändere, funktioniert es wie erwartet. Ich gehe davon aus, dass das ausgeblendete Feld nicht wirklich ausgefüllt ist, während das Textfeld aufgrund der bidirektionalen Bindung tatsächlich angezeigt wird.
Irgendwelche Ideen, wie ich ein verstecktes Feld einreichen kann, das von AngularJS ausgefüllt wird?
<input type="hidden" required ng-model="data.userid" ng-init="data.userid=pivot.id" />
. Dies ist möglicherweise nicht die richtige Vorgehensweise, funktioniert aber für mich.
display: none;
? Es ist hässlich. Angular ignoriert versteckte Elemente.