Я пытаюсь сохранить данные отмеченных флажков в массиве, я могу поместить данные в массив, когда установлен один флажок, но когда установлен флажок 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);