Angular JS checkbox - Das Modell ist standardmäßig nicht auf false festgelegt

8

Ich habe zwei Kontrollkästchen in meinem Angular JS-Formular, so ...

%Vor%

Wenn ich beide Kästchen ankreuze, schreibe den $ scope in die Konsole, beide Werte sind auf true gesetzt, aber wenn ich nur eins ankreuze, dann erscheint eins im $ scope (auf true gesetzt) ​​und das andere ist einfach fehlt. Es sollte im $ scope sein und sicher auf 'false' gesetzt sein?

    
jonhobbs 26.01.2014, 12:11
quelle

3 Antworten

8

Wenn eine Eigenschaft, die ng-model zugewiesen ist, undefiniert ist, erstellt ng-model die Eigenschaft automatisch, nachdem der Wert zum ersten Mal geändert wurde . Es bedeutet, dass du ab dem zweiten Mal beide Eigenschaften sehen wirst.

DEMO

Um dies zu vermeiden, könnten Sie für beide Eigenschaften den Standardwert false festlegen:

%Vor%

DEMO

    
Khanh TO 26.01.2014, 12:43
quelle
8

Eine flexiblere Lösung besteht darin, einen ng-init-Wert festzulegen. Dies funktioniert sowohl für dynamische Eigenschaften als auch für feste Werte, was die akzeptierte Lösung nicht tut.

%Vor%     
Astronaut 08.03.2016 09:50
quelle
5

Sie können ngTrueValue und ngFalseValue verwenden. Ich benutze 1/0 benutze es dementsprechend

%Vor%

Von Google Docs

  

ngTrueValue: Der Wert, auf den der Ausdruck gesetzt werden soll, wenn er ausgewählt ist.

     

ngFalseValue: Der Wert, auf den der Ausdruck gesetzt werden soll, wenn er nicht ausgewählt ist.

ODER

Sie können ngChecked verwenden. Wenn der Ausdruck truthy ist, dann Das spezielle Attribut "checked" wird für das Element

gesetzt %Vor%     
Satpal 26.01.2014 12:14
quelle