2016-11-04 14 views
0

私のページには角度の付いたアコーディオンがあり、それぞれのパネルの中に項目とチェックボックスを含むレンダリングリストがあります。 選択方法とロジックについてはthis resourceを使用しました。このリソースロジックでは動作するようですが、私はこのロジックを自分のコードに入れていますが、動作を停止します。すべてのチェックボックスが選択されている場合はすべてを選択、角度js

私が達成したいのは、すべてのチェックボックスが選択されている場合、「すべて選択」チェックボックスが自動的に選択されている場合、チェックボックスのいくつかが選択されていない場合はチェックボックス「すべて選択」も非選択にする必要があります。

私は複数の提案を提供しましたhereherehere、しかし最後に私は同じ結果を得ています。

誰かが私の問題を解決するのに役立つと感謝します。

$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> 

This is my plunker

+0

あなたの 'array.every'関数で' return item.Selected === true; 'を試してください。 –

+0

@ Alex.Sまだ同じ動作です – antonyboom

答えて

1

あなたplunkerのこのフォークを見てください:それは良いことだ
1:https://plnkr.co/edit/OW3F1VMke9iLuNkt5p3o?p=preview

2つのことを実践的あなたのビューモデルへのオブジェクトを作成するには(plunker $scope.modelの名前モデルで見つけることができます。これは、2ウェイのデータバインディングの問題を解決します。
2. ng-clickng-changeに変更しました(これはソリューションの一部ではありませんが、私の意見ではもっと正確です)。

さらに詳しい説明が必要な場合は教えてください。

+0

model.selectedAllに小さなバグがあります。すべてを選択すると、すべてのパネルのチェックボックスが選択されます。https://plnkr.co/edit/XPdqwAXIVgYDU4rMr5DO?p=preview。しかし、私は望みの結果を得ました、ありがとう! – antonyboom

+0

あなたは大歓迎です! – vlio20

関連する問題