Angular JS checkbox - Modell nicht standardmäßig false
Ich habe zwei Checkboxen in meinem Angular JS form, wie diese...
<input id="isBackground" type="checkbox" ng-model="addTemplate.data.isBackground">
<input id="repeats" type="checkbox" ng-model="addTemplate.data.repeats">
Wenn ich das Häkchen bei beiden Boxen dann schreiben die $scope an die Konsole, beide Werte auf true gesetzt sind, aber wenn ich nur ankreuzen einer von Ihnen, dann scheint man in die $scope (auf true gesetzt), und die andere ist einfach nicht vorhanden. Es sollte in der $scope und setzen auf 'false' sicher?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn eine Eigenschaft zugewiesen
ng-model
ist undefined, ng-Modell wird automatisch die Eigenschaft, nach der sich der Wert verändert, zum ersten mal. Es bedeutet, aus der zweiten Zeit auf, Sie werden sehen, dass beide Eigenschaften.DEMO
Um dies zu vermeiden, können Sie die Standard -
false
für beide Eigenschaften:DEMO
id
s für jedeninput
, ist das beabsichtigt?ids
sind nicht notwendig, kopiert und eingefügt von der Frage, vergaß, Sie zu entfernen.ng-repeat
zum erzeugen der Checkboxen dynamisch oder legen Sie einfach ein html-snippet. Im letzteren Fall, müssen Sie kompilieren Sie Ihre snippet ($compile-service)ng-init
, es ist nur die Frage, wo Sie Ihren Initialisierungscode. BTW, die Nutzungng-init
ist nicht zu empfehlen: docs.angularjs.org/api/ng/directive/ngInitsuch as for aliasing special properties
so dass es einfacher ist, die Ansicht manipulieren, Aber es ist nicht angemessen-Modell Standard-Wert.Einer flexibleren Lösung wird ein ng-init-Wert, das funktioniert für dynamische Eigenschaften so gut wie fest, etwas, das akzeptiert die Lösung nicht.
Können Sie
ngTrueValue
, undngFalseValue
. Ich habe die Verwendung1/0
verwenden Sie es entsprechendVom Docs
ODER
Können Sie ngChecked, Wenn der Ausdruck ist truthy, dann spezielle Attribut "checked" gesetzt auf das element