5

私は最近Angular.jsで遊んでいて、親のチェックボックスがチェックされたら、すべてのチェックボックスをチェックすることにしました。これは、ディレクティブを使用してng-model行いng-checkedました。

    <div ng-app>
        <div ng-controller="Ctrl">
            <input type="checkbox" ng-model="parent"/> Select All<br/>
            <input type="checkbox" ng-model="child_1" ng-checked="parent" ng-click="getAllSelected()"/> First<br/>
            <input type="checkbox" ng-model="child_2" ng-checked="parent" ng-click="getAllSelected()"/> Second<br/>
            <input type="checkbox" ng-model="child_3" ng-checked="parent" ng-click="getAllSelected()"/> Three<br/>
            <input type="checkbox" ng-model="child_4" ng-checked="parent" ng-click="getAllSelected()"/> Four<br/>
            <input type="checkbox" ng-model="child_5" ng-checked="parent" ng-click="getAllSelected()"/> Five<br/>
        </div>
    </div>

すべての子チェックボックスがチェックされたら、すべての親チェックボックスを選択しようとしていますが、いくつかの問題に直面しています。

    function Ctrl($scope) {
       $scope.getAllSelected = function () {
          var chkChild = document.querySelectorAll('input[ng-model^="child_"]').length;
          var chkChildChecked = document.querySelectorAll('input[ng-model^="child_"]:checked').length;
          if (chkChild === chkChildChecked) $scope.parent= true;
          else $scope.parent= false;
       }
    }

デモ: http://jsfiddle.net/codef0rmer/QekpX/

上記のコードをより堅牢にすることはできますか?

4

2 に答える 2

6

チェックボックスの ng-checked 属性は式を受け取ります。したがって、式に基づいてチェックするために、以下で説明するように、および/または条件を使用して式を指定できます。

<input type="checkbox" ng-checked="child_1 && child_2 && child_3 && child_4 && child_5" ng-model="parent"/> Select All<br/>

すべての子チェックボックスがクリックされたときに計算を行うために、別の関数を記述する必要はありません。

これがjsfiddleの例です

于 2012-08-27T15:13:08.813 に答える