checkAll флажок в angularjs не работает - PullRequest
0 голосов
/ 27 марта 2019

Я пытаюсь сохранить данные отмеченных флажков в массиве, я могу поместить данные в массив, когда установлен один флажок, но когда установлен флажок checkAll, все флажки не выбираются, если я установил всефлажки и снимите флажок checkAll все не сняты.

Я пытался использовать javascript, он работал так, как я ожидал, но я пытаюсь сделать это в angularjs, но получить его не удалось.

HTML:

<div ng-if="RosList!= null">
  <table align='center' width='80%' >

    <tr class='trdesign'> 
      <td>
        <input type="hidden" id="RosList" data-ng-model="RosList" name="RosList" value="{{RosList}}">  
        <input type="checkbox" id="all" data-ng-model="checkedAll" ng-change="toggleCheckAll()" />
      </td>
      <td> Sl No</td>
      <td> RO No.</td>
    </tr>

    <tr ng-repeat="user in  RosList" >
      <td>
        <input type="checkbox" value="{{user.do_ro_no}}" data-ng- 
model="user.checked" ng-change="modifyArrayToPost(user)"/>
      </td>
      <td>{{user.slno}}</td>
      <td>{{user.do_ro_no}}  </td>

    </tr>

  </table> 
  <tt>array: {{arrayToPost}}</tt>

</div>

Angularjs:

$scope.arrayToPost = [];

 $scope.toggleCheckAll = function() {
   if($scope.checkedAll) {
     angular.forEach($scope.RosList, function(user) {
       user.checked = true;
        $scope.modifyArrayToPost(user);
     });
   }
   else {
     angular.forEach($scope.RosList, function(user) {
       user.checked = false;
        $scope.modifyArrayToPost(user);
     });
   }
 }


 $scope.modifyArrayToPost = function(user) {
   if(user.checked && $scope.arrayToPost.indexOf(user.do_ro_no) == -1){
     $scope.arrayToPost.push(user.do_ro_no);
   }
   else if(!user.checked) {
     $scope.arrayToPost.splice($scope.arrayToPost.indexOf(user.do_ro_no), 1);
   }
 }

 $scope.$watch('RosList', function() {
     var allSet = true;
     var allClear = true;
     angular.forEach($scope.RosList, function(user) {
        if (user.checked) {
          allClear = false;
        } else {
          allSet = false;
        }         
     });

     var checkAll = $element.find('#all');
     checkAll.prop('indeterminate', false);
     if (allSet) {
        $scope.checkedAll = true;
     } else if (allClear) {
        $scope.checkedAll = false;
     } else {
        $scope.checkedAll = false;
        checkAll.prop('indeterminate', true);
     }
   }, true);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...