var myapp = angular.module('sampleapp', [ ]);
myapp.controller('samplecontoller', function ($scope) {
$scope.labelList = [
{name:'India'},
{name:'USA'},
{name:'Russia'},
{name:'China'},
{name:'Australia'},
{name:'Japan'}
]
$scope.model = {
selectedLabelList : []
}
$scope.isSelectAll = function(){
$scope.model.selectedLabelList = [];
if($scope.master){
$scope.master = true;
for(var i=0;i<$scope.labelList.length;i++){
$scope.model.selectedLabelList.push($scope.labelList[i].name);
}
}
else{$scope.master = false;}
angular.forEach($scope.labelList, function (item) {
item.selected = $scope.master;
});
}
$scope.isLabelChecked = function()
{
var _name = this.label.name;
if(this.label.selected){
$scope.model.selectedLabelList.push(_name);
if($scope.model.selectedLabelList.length == $scope.labelList.length ){$scope.master = true;}
}else{
$scope.master = false;
var index = $scope.model.selectedLabelList.indexOf(_name);
$scope.model.selectedLabelList.splice(index, 1);
}
}
});
<div ng-app="sampleapp" ng-controller="samplecontoller">
<input type="checkbox" ng-model="master" ng-change="isSelectAll()"><label>Countries</label><br>
<span ng-repeat="label in labelList">
<input type="checkbox" ng-model="label.selected" ng-change="isLabelChecked()">
<label>{{ label.name }}</label>
</span>
</div>
span{
display:block;
margin-left:10px;
}
label{
display:inline-block !important;;
}
div{
margin:10px 10px;
}
input{
cursor:pointer;
vertical-align:top;
}
External resources loaded into this fiddle: