Ich konfrontiert mit einem kleinen Problem im Zusammenhang mit ng-Klasse. Ich habe eine Liste mit Kontrollkästchen. Für diese Liste habe ich ng-Klasse als Nächstes eingerichtet, wenn das Kontrollkästchen aktiviert ist, legen Sie die benutzerdefinierte CSS-Klasse für das ausgewählte Element fest. Ich habe auch eine Checkbox "Select All", wenn ich auf dieses Feld klicke, CSS-Klasse für alle Elemente angewendet, aber wenn ich alle abwählen, ändert sich CSS-Klasse nicht für Elemente, die zuvor manuell ausgewählt wurden.ng-Klasse funktioniert nicht richtig für ausgewählte Kontrollkästchen
Ich erstellte plunker, um mein Problem zu zeigen.
Was fehlt mir und wo ist mein Fehler? Danke im Voraus.
html
<table class="table table-hover">
<tr ng-class="{'selected': allCategoriesSelected, 'default': !allCategoriesSelected}">
<td class="col-md-2">
<input type="checkbox" ng-click="selectAllCategories()" >
</td>
<td class="col-md-10" ng-if="!allCategoriesSelected">Select all</td>
<td class="col-md-10" ng-if="allCategoriesSelected">Deselect all</td>
</tr>
<tr ng-repeat="category in categories | orderBy : 'id'" ng-class="{'selected': allCategoriesSelected, 'default': !allCategoriesSelected}" >
<td class="col-md-2">
<input type="checkbox" ng-model="allCategoriesSelected" ng-click="updateCategory(category.id)">
</td>
<td class="col-md-10">{{ category.name }}</td>
</tr>
</table>
js
$scope.selectedCategories = [];
$scope.allCategoriesSelected = false;
$scope.selectAllCategories = function() {
$scope.allCategoriesSelected = !$scope.allCategoriesSelected;
};
$scope.updateCategory = function(categoryId) {
if ($scope.selectedCategories.indexOf(categoryId) > -1) {
$scope.selectedCategories.splice($scope.selectedCategories.indexOf(categoryId), 1);
} else {
$scope.selectedCategories.push(categoryId);
}
};
die Plunker ein anderes Problem hat: wenn Sie eine einzelne Kategorie auswählen und dann alle Kategorien auswählen, wird die Klasse richtig eingestellt, aber die Kontrollkästchen werden nicht überprüft. ist ein Problem nur der Plünderer oder ist auch ein Problem in Ihrem Code? –
@Jon_Snow fixed plunker – antonyboom
Möchten Sie, dass die zuvor ausgewählten Elemente deaktiviert werden, wenn Sie auf "Alle abwählen" klicken oder möchten Sie nur, dass sich die Klasse ändert? –