AngularJS: eine Verbindliche boolescher Wert, der den radio-button so, dass er updates Modells auf false deaktivieren-Ereignis
In meinem AngularJS-Anwendung, ich bin Kontakte anzeigen von Daten in einem raster. Mein typischer Kontakte JSON sieht so aus, als unten ...
[
{ type: "IM", value: "mavaze123", default: true },
{ type: "IM", value: "mvaze2014", default: false },
{ type: "IM", value: "mavaze923", default: false },
{ type: "IM", value: "mvaze8927", default: false },
{ type: "Email", value: "[email protected]", default: true },
{ type: "Email", value: "[email protected]", default: false }
]
Letzten Eigenschaft 'default' ist eigentlich ein radio-button, Auswahl sollten, ändern Sie die ursprüngliche Standardwert für den entsprechenden Kontakttyp in der obigen JSON. Es kann ein default von jeder Art von Kontakt, d.h. wir können die Gruppe radio-buttons auf der Grundlage der Kontakt-Typ.
<div ng-repeat="contact in contacts">
<div>{{contact.type}}</div>
<div>{{contact.value}}</div>
<div><input type="radio" name="{{contact.type}}" ng-model="contact.default" ng-value="true"/></div>
</div>
Hinweis: Der obige code ist nicht exakt, aber ungefähr das gleiche, als
es erscheint in einem speziell für die grid-Komponenten.
Wenn ich jetzt laden meine Ansicht/Bearbeiten der Formular-Seite mit den oben JSON, ist es korrekt, zeigt das radio den Status aller Kontakte. Das problem kommt, nachdem die Seite geladen, wenn der Benutzer wählt einen anderen Kontakt als Standard. Diese tatsächlich ändert sich die Modell-Wert, der standardmäßig auf true für die neu gewählten Kontakt jedoch dem Modell-Wert der original-Standard-Kontakt bleibt wahr, auch wenn Ihr radio sich der Zustand ändert, um Sie zu deaktivieren/unscharf (weil Sie mit den gleichen 'name' - Wert).
Dachte ich Schreibe eine Richtlinie, aber ich bin nicht in der Lage zu bekommen, löste es auf radio-blur/deaktivieren-Ereignis.
Gibt es verschiedene Beiträge über verbindliche booleschen Werte, um zu radio-buttons, aber ich bin nicht in der Lage, um es arbeiten in meinem Szenario, wie ich will, um update-Modell Werte für die einzelnen radio-button ein radio-Gruppe. Sehen Sie, es gibt kein einziges Modell, eine radio-Gruppe.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, dass sollten Sie ändern Ihr design zu trennen, die
contacts
auscontactTypes
und speichern Sie die Schlüssel, um die Standard-Kontakt-Kontakt-Typ.In Ihrem aktuellen design gibt es duplizierte Werte für
default
- und das ist nicht der gewünschte Weg zur Arbeit mitradio
.Sie Html:
DEMO
Ich gehe davon aus, dass der Schlüssel der Kontakt ist
value
können Sie mit einemId
für Ihre Kontaktaufnahme.Id
von der Standard-Kontakt-Typ.$scope.contactTypes
nachdem Sie die Daten und aktualisieren Sie diedefault
Werte, bevor Sie Sie senden zurück.Ich Hinzugefügt ein Attribut-Direktive in meine input-Anweisung ...
Und meine benutzerdefinierte Richtlinie ...
Warum erklären Sie
ng-value="true"
entfernen Sie bitte, dassNutzen Sie bitte
$scope.$apply()
in Ihrem Wert code ändernWie etwas weiter unten