Im storeLocations-Objekt wird ein Modell mit einem isDefault-Wert zurückgegeben. Wenn isDefault true zurückgibt, wird dieses Optionsfeld in der Gruppe nicht als aktiviert markiert.
Ich bin mir nicht sicher, ob ich ein $ each (Daten, Funktion (Index, Wert)) ausführen und jedes zurückgegebene Objekt durchlaufen muss, oder ob es eine einfachere Möglichkeit gibt, dies mit den Konstrukten angular) zu tun.
Objekt:
storeLocations = [
{
... more values,
isDefault: true
}
]
Markup:
<tr ng-repeat="location in merchant.storeLocations">
<td>{{location.name}}</td>
<td>{{location.address.address1}}</td>
<td>{{location.address.address2}}</td>
<td>{{location.address.city}}</td>
<td>{{location.address.stateProvince}}</td>
<td>{{location.address.postalCode}}</td>
<td>{{location.address.country}}</td>
<td>{{location.website}}</td>
<td>{{location.zone}}</td>
<td><input type="radio" ng-model="location.isDefault" value="{{location.isDefault}}" name="isDefault_group"></td>
Verwenden ng-value
anstelle von value
.
ng-value="true"
Version mit ng-checked
ist schlechter wegen der Code-Duplizierung.
Wenn Sie eine Gruppe von Optionsfeldern haben und das Optionsfeld basierend auf dem Modell aktiviert haben möchten, wird das Optionsfeld, das das gleiche value
und ng-model
Hat, automatisch aktiviert.
<input type="radio" value="1" ng-model="myRating" name="rating" class="radio">
<input type="radio" value="2" ng-model="myRating" name="rating" class="radio">
<input type="radio" value="3" ng-model="myRating" name="rating" class="radio">
<input type="radio" value="4" ng-model="myRating" name="rating" class="radio">
Wenn der Wert von myRating
"2" ist, wird das zweite Optionsfeld ausgewählt.
Eine Möglichkeit, die ich leistungsfähiger sehe und vermeiden kann, in allen Modellen ein isDefault
zu haben, ist die Verwendung der ng-Attribute ng-model
, - ng-value
und ng-checked
.
ng-model: Bindet den Wert an Ihr Modell.
ng-value: Der Wert, der an die Bindung ng-model
übergeben werden soll.
ng-checked: Wert oder Ausdruck, der ausgewertet wird. Nützlich für Optionsfelder und Kontrollkästchen.
Anwendungsbeispiel: Im folgenden Beispiel habe ich mein Modell und eine Liste der Sprachen, die meine Site unterstützt. Um die verschiedenen unterstützten Sprachen anzuzeigen und das Modell mit der ausgewählten Sprache zu aktualisieren, können wir dies auf diese Weise tun.
<!-- Radio -->
<div ng-repeat="language in languages">
<div>
<label>
<input ng-model="site.lang"
ng-value="language"
ng-checked="(site.lang == language)"
name="localizationOptions"
type="radio">
<span> {{language}} </span>
</label>
</div>
</div>
<!-- end of Radio -->
Unser Modell site.lang
Erhält einen language
-Wert, wenn der Ausdruck unter Bewertung (site.lang == language)
Wahr ist. Auf diese Weise können Sie es einfach mit dem Server synchronisieren, da die Änderung bereits in Ihrem Modell vorhanden ist.
Wurde nur mit dem eingebauten angular Attribut ng-checked="model"
Wie bereits in den Fragenkommentaren erläutert, können Sie dies auf folgende Weise tun:
<input ... ng-model="$parent.storeDefault" value="{{location.id}}">
Das Obige nimmt an, dass jeder Ort ein Feld (z. B. id) hat, das einen eindeutigen Wert enthält.
Beachten Sie, dass $ parent.storeDefault verwendet wird, weil ng-repeat einen untergeordneten Bereich erstellt und wir den storeDefault-Parameter im übergeordneten Bereich bearbeiten möchten.
Geige .
Mach einfach so etwas, <input type="radio" ng-disabled="loading" name="dateRange" ng-model="filter.DateRange" value="1" ng-checked="(filter.DateRange == 1)"/>