私のページには角度の付いたアコーディオンがあり、それぞれのパネルの中に項目とチェックボックスを含むレンダリングリストがあります。 選択方法とロジックについてはthis resourceを使用しました。このリソースロジックでは動作するようですが、私はこのロジックを自分のコードに入れていますが、動作を停止します。すべてのチェックボックスが選択されている場合はすべてを選択、角度js
私が達成したいのは、すべてのチェックボックスが選択されている場合、「すべて選択」チェックボックスが自動的に選択されている場合、チェックボックスのいくつかが選択されていない場合はチェックボックス「すべて選択」も非選択にする必要があります。
私は複数の提案を提供しましたhere、here、here、しかし最後に私は同じ結果を得ています。
誰かが私の問題を解決するのに役立つと感謝します。
$scope.categories = [
{
id: 1,
name: "category 1"
},
{
id: 2,
name: "category 2"
},
{
id: 3,
name: "category 3"
}
]
$scope.selectedAll = false;
$scope.selectAll = function(array) {
$scope.selectedAll = !$scope.selectedAll;
angular.forEach(array, function(item) {
item.Selected = $scope.selectedAll;
});
};
$scope.checkIfAllSelected = function(array) {
$scope.selectedAll = array.every(function(item) {
return item.Selected == true
})
};
HTML
<div>
<div class="row" ng-class="{'selected': selectedAll, 'default': !selectedAll}">
<div>Select all
<input type="checkbox"
ng-model="selectedAll" ng-click="selectAll(categories)" >
</div>
</div>
<div class="row" ng-repeat="item in categories | orderBy : 'id'" ng-class="{'selected': item.selected, 'default': !item.selected}">
<div > {{ item.name }}
<input type="checkbox"
ng-model="item.Selected" ng-click="checkIfAllSelected(categories)"
>
</div>
</div>
あなたの 'array.every'関数で' return item.Selected === true; 'を試してください。 –
@ Alex.Sまだ同じ動作です – antonyboom