0

J'ai une case à cocher Parent qui est cochée quand une case enfant est cochée. Je veux que cette case à cocher parent soit associée à une troisième case à cocher. Mais la liaison bidirectionnelle ne fonctionne pas lorsque le changement est dû à ng-checked. Voici le modèle:ng-models ne lie pas lorsque ng-checked

<div><input type="checkbox" ng-checked="childCheckbox" ng-model="parentCheckbox" /> Parent Checkbox</div> 
<div><input type="checkbox" ng-model="childCheckbox" /> Child Checkbox</div> 
<div><input type="checkbox" ng-model="parentCheckbox" /> A third Checkbox binding with Parent Checkbox</div> 

Voici l'exemple de travail en jsFiddle: http://jsfiddle.net/Alien_time/vy5UM/1/

Dans les mots d'ordre, lorsque la case parent est cochée en cliquant sur le modèle de ng-se fixe avec la 3ème case à cocher. Mais si la case parent est cochée à cause de ng-checked, la troisième case ne met pas à jour la modification. Comment puis-je réaliser cela dans Angular?

+1

vérifiée ng-est juste un attribut conditionnel, il ne modifie pas toujours la propriété ci-joint. Y at-il une raison pour laquelle vous n'avez pas toutes ces cases à cocher utilisant la même valeur qu'un modèle ng? Cela semble être l'intention – mbroadst

+0

Pourquoi vous ne pouvez pas simplement ajouter la case 'ng-checked =" childCheckbox "' à la 3ème case? –

+0

@Artem Petrosian l'exemple est une version simplifiée pour une démo. Mais dans mon cas, la 3ème case à cocher est réellement placée dans une autre ng-repeat où je suis incapable d'ajouter l'option ng-checked pour ce parent. C'est pourquoi j'ai pensé à placer la case à cocher parent principal à l'extérieur, puis lier cela avec le 3ème. – Neel

Répondre

0

Non, je ne pense pas que ce soit possible sans JS supplémentaire. Cependant, I made a version that does use a bit of JS et fonctionne bien.

<div><input type="checkbox" ng-click="clickOthers()" ng-model="childCheckbox" /> Child Checkbox</div> 

(ajouté au contrôleur)

$scope.clickOthers = function() { 
    $scope.parentCheckbox = $scope.childCheckbox; 
} 
+0

Merci Zeke. La méthode JS semble bonne. Je vais essayer maintenant .. :) – Neel

+0

Merci @ZekeSonxx Votre méthode JS fonctionne bien pour les listes statiques. Cependant, j'ai toujours de la difficulté à adapter ce code lorsque les cases à cocher sont créées en utilisant 'ng-repeat' avec les' ng-models' dynamiques. J'ai accepté cette réponse puisque votre solution répond à ma question ci-dessus. Pour mon problème avec les cases dynamiques, j'ai créé une question distincte plus spécifique à cela. Voici le lien si vous voulez jeter un coup d'oeil: http://stackoverflow.com/questions/23468028/how-to-select-parent-checkbox-when-a-child-is-selected-inside-ng-repeat Merci encore pour votre soutien jusqu'à présent. Très appréciée! :) – Neel