Ich habe ein Problem, wo ich versuche, den Wert eines Kontrollkästchens in meinem Modell auf den Server zu posten und da das Kontrollkästchen nicht mit dem Formular interagiert wurde, scheint eckig nicht zugeordnet zu haben es ist ein Wert, wenn ich nach dem Wert des Kontrollkästchens frage, kommt es als undefined zurück.AngularJS Checkbox-Modellwert ist undefined
Hier ist mein Markup:
<div class="form-group">
<input id="templateDisable" type="checkbox" ng-model="template.disabled" />
<label for="templateDisable">Disabled</label>
</div>
Und hier ist eine verkleinerte Version meiner speichern Aktion auf mein Controller:
$scope.save = function (form) {
if (form.$valid) {
var formData = new FormData();
// this is the problem line of code
formData.append("disabled", $scope.template.disabled);
// ... some other stuff
}
};
Eigentlich tickt dann das Kontrollkästchen Haken bei, bevor ich die Aktion Ergebnisse speichern Hit in der Eigenschaft template.disabled ist false, was ich ohne manuellen Eingriff erwartet hätte.
Ich habe andere verwandte Fragen gesehen, z.B. AngularJS: Initial checkbox value not in model aber sicher Zeug wie eine einfache Checkbox sollte gebacken werden? Ich sollte nicht unbedingt Anweisungen schreiben müssen, um Checkboxen sicher zu verwalten.
Welchen Vorteil hat es, die Modelleigenschaften undefiniert zu lassen? –
Ich würde sagen, dass es mehrere gibt. a) Das Modell wird nicht implizit geändert, indem es einfach an ein Steuerelement angehängt wird. Das wäre schlechtes Design, IMHO. b) Die Konsistenz bleibt erhalten, denn wenn das Kontrollkästchen standardmäßig auf "false" gesetzt wurde, dann muss die Eingabe des Textes auch den Anfangswert auf die leere Zeichenfolge "" setzen, um die Konsistenz zu gewährleisten. Aber das wäre auch schlechtes Design. – Stewie
Wie @NeilAtkinson unten darauf hingewiesen, wird dies immer den Wert auf false setzen, auch wenn es an erster Stelle wahr war. –