2017-09-26 5 views
0

Structure estActivez la case à cocher ng: si la case parent est sélectionnée, les deux parents et enfants sont indénombrables. tableau

$scope.divisions = [ 
    { Description: 'test1', Id: 1 }, 
    { Description: 'test2', Id: 2 }, 
    { Description: 'test3', Id: 3 }, 
    { Description: 'test4', Id: 4 }, 
    { Description: 'test5', Id: 5 } 
]; 

    $scope.subd = [ 
    { Description: 'sub1', Id: 7 }, 
    { Description: 'sub2', Id: 8 }, 
    { Description: 'sub3', Id: 9 } 
]; 

Si test1 est sélectionné subd devrait afficher sous ce, subd peut être sélectionnable.

Je veux attraper seulement l'identifiant de division et le sous-champ.

vérifier sur Plunker http://plnkr.co/edit/hjb5HTITyJelqdjLN5h2?p=preview

Répondre

0

Mise à jour

Si vous voulez que le parent soit sélectionné juste que lorsque un ou plusieurs enfants sont sélectionnés alors vous pourriez envisager de désactiver l'entrée des parents et le mettre à jour en fonction sélectionnée enfants.

De les stocker également sur une nouvelle variable $scope.selected comme JSON.

<ul class="radio-check-group"> 
    <li ng-repeat="d in divisions"> 
     <input disabled type="checkbox" ng-model="d.selected" class="" id="{{'div' + d.Id}}" name="selectedDivisions[]" /> 
     <label for="div{{$index}}">{{d.Description}}</label> 
     <ul> 
     <li ng-repeat="s in d.subd"> 
     {{$parent.$index}} 
      <input type="checkbox" ng-change="updateParent(d)" ng-model="s.selected" class="" id="{{'div' + d.Id}}" name="selectedsubd[]" /> 
      <label for="div{{$index}}">{{s.Description}}</label> 
     </li> 
     </ul> 
    </li> 
    </ul> 

et la fonction contrôleur:

function initializeDivisionSubd() { 
    angular.forEach($scope.divisions, d => { 
     d.subd = angular.copy($scope.subd); 
    }) 
}; 

$scope.selected = []; 

initializeDivisionSubd(); 

$scope.updateParent = (parent) => { 
    parent.selected = !!parent.subd.find(s => s.selected); 
    $scope.selected = angular.toJson($scope.divisions.filter(d => d.selected).map(d => { 
     return { 
     Id: d.Id, 
     subd: d.subd.filter(sd => sd.selected).map(sd => { 
      return { 
      Id: sd.Id 
      } 
     }) 
     } 
    })); 

Voici le updated fiddle

+0

bonjour, @korte, Si aucun de l'enfant est sélectionné, parent doit être désélectionné, et il est non seulement pour test1, Si une partie de la division est sélectionnée, elle doit afficher la liste des sous-sections. Et où vous stockez c'est json respectif. –

+0

Vérifiez la réponse mise à jour – Korte

+0

ya! , c'est bien mais pouvez-vous l'implémenter pour tout test1, test2 ... et stocker comme json comme indiqué dans le plunker de ma question –