ng-classに関連する小さな問題に直面しました。私はチェックボックスのリストを持っています。このリストでは、次の方法でng-classを設定します。チェックボックスをオンにすると、選択したアイテムのカスタムCSSクラスを設定します。また、私はこのボックスをクリックすると、すべての項目に適用されるcssクラスがチェックされていますが、すべてを選択解除すると、cssクラスは前に手動で選択された項目に対して変更されません。選択したチェックボックスでng-classが正常に動作しない
私は自分の問題を示すために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);
}
};
plunkerは別の問題があります:あなたは、単一のカテゴリを選択して、すべてのカテゴリを選択した場合、クラスが正しく設定されていますが、チェックボックスがチェックされません。プランナーだけの問題か、コード内の問題ですか? –
@Jon_Snow fixed plunker – antonyboom
「すべて選択解除」をクリックしたときに以前に選択された項目をチェックしないようにしたいのですか、またはクラスを変更したいだけですか? –