Я столкнулся с небольшой проблемой, связанной с ng-class. У меня есть список флажков. Для этого списка я настраиваю ng-класс следующим образом, если установлен флажок, устанавливаю собственный класс CSS для выбранного элемента. Также у меня есть флажок «Выбрать все», если я нажму на это поле, класс css будет применен ко всем элементам, но когда я отменю выбор всех, класс css не изменится для элементов, которые ранее были выбраны вручную.
Я создал plunker, чтобы показать свою проблему.
Что я упускаю и в чем моя ошибка? Заранее спасибо.
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);
}
};