Sélectionner plusieurs objets et de les enregistrer à ng-model
HTML:
<select ng-model="contact.groups"
ng-options="item.id as item.name for item in groups"
ng-multiple="true" multiple>
<option value="">Choose groups</option>
</select>
contact.groups
contient une liste de groupes affectés à la contacter:
[
{
id: 145,
name: 'FooBar
}
]
groups
est une liste de tous les groupes disponibles. Premier problème est que le point.id en ng-options affiche pas la bonne ID de le groupe mais semble compter à partir de 0 (premier groupe dans la liste), 1 (deuxième groupe dans la liste), etc
Deuxième problème est que le contact.les groupes n'est pas pris en compte, il n'y a pas de pré-groupes sélectionnés dans le champ select.
Voir ce violon http://jsfiddle.net/Jy643/1/
Toute idées sur la façon de gérer ce problème?
- il fonctionne comme prévu, assurez-vous que vous appuyez uniquement le
id
dans le suivi de la collection, et non l'ensemble de l'objet jsfiddle.net/Jy643/2 - Ouais mec, il fonctionne. http://jsfiddle.net/zargyle/Jy643/3/
- J'ai mis à jour le violon, jsfiddle.net/Jy643/4 il ne fonctionne pas si le modèle est livré avec les données
- Je ne pense pas que ng-multiple="true" ne fait rien?
- Je pense que vous avez raison - ng-multiple="false" était censé créer une sélection unique de zone de liste, mais c'est un peu capricieux, et il n'y a pas de doc pour ngMultiple que je peux trouver.
- vous n'êtes pas l'initialiser à droite. Il devrait ressembler à: $champ d'application.contact = {nom: 'Bob', groupes: [143]}
Vous devez vous connecter pour publier un commentaire.
ngOptions compare les objets par une égalité stricte, ce qui signifie que votre modèle de groupe doit être une référence à l'un des groupe dans
$scope.groups
:PLUNKER
Essayez d'utiliser le suivi par tracking_expression " dans ngOptions (également exécuter sur ngRepeat) qui permettent de regrouper les objets par une expression au lieu d'une référence.
Angulaire Sélectionner La Documentation