2017-10-05 81 views
0

我遇到问题时,在没有记录时选中所有选中按钮。当我没有任何记录时,选中所有复选框默认情况下为选中状态

下面是我的代码:当我没有在我的$ scope.items记录

<input type="checkbox" ng-model="selectAll" ng-model-options="{getterSetter: true}"/> 

var getAllSelected= function() { 
     var selectedItems = $scope.items.filter(function (item) { 
      return item.selected; 
     }); 
     return selectedItems.length === $scope.items.length; 
    } 

    var setAllSelected = function (value) { 
     angular.forEach($scope.items, function (item) { 
      item.selected = value; 
     }); 
    } 

    $scope.selectAll = function (value) { 
     if (value !== undefined) { 
      return setAllSelected(value); 
     } else { 
      return getAllSelected(); 
     } 
    } 

所以问题是低于状况越来越真:

return selectedItems.length === $scope.items.length; 

回答

1

我试图与下面代码段代码:

var app = angular.module('app', []) 

.controller('ctrl', ['$scope', function($scope) { 


$scope.value = false; 
$scope.items = [{},{}]; 

var getAllSelected= function() { 
     var selectedItems = $scope.items.filter(function (item) { 
      return item.selected; 
     }); 
     return $scope.items.length != 0 && selectedItems.length === $scope.items.length; 
    } 

    var setAllSelected = function (value) { 
     console.log(value); 
     angular.forEach($scope.items, function (item) { 
      item.selected = value; 
     }); 
    } 

    $scope.selectAll = function (value) { 
     console.log(value); 
     if (value !== undefined) { 
      return setAllSelected(value); 
     } else { 
      return getAllSelected(); 
     } 
    } 
    }]); 

<input type="checkbox" ng-model="selectAll" ng-model-options="{getterSetter: true}"/> 

,它工作正常..

您可以点击这里:https://plnkr.co/edit/oUjNQGI363SJPMeaWA6A?p=preview

1

相当简单的修复,只需添加一个条件以确保长度不为零。

return $scope.items.length != 0 && selectedItems.length === $scope.items.length; 
+0

这工作,但问题是如果没有记录,我无法检查我的全选复选框。在这种情况下,我应该能够检查selectall复选框 –

相关问题