Comment utiliser un objet comme ng-valeur d'un bouton radio?
Est-il possible d'utiliser un objet pour le gn-valeur d'un bouton radio?
Imaginez que vous avez un bouton radio dont la ng-model est un objet, comme ceci:
modelObject: {val:'', text:''}
Et ce serait le bouton radio:
<input type="radio" ng-model="data.modelObject" ng-value=""/>
Est-il un moyen de faire quelque chose comme ce qui suit (évidemment ça ne fonctionne pas)
<input type="radio" model="data.modelObject" ng-value="val:option.id, text:option.text"/>
?
Grâce
Je sais que je peux utiliser le ng-modifier la directive. Je me demande simplement si ce que je demande c'est possible, il serait très intelligent
EDIT:
comme demandé dans les commentaires, je donne un peu plus d'info sur mon installation.
Je veux enregistrer dans le modèle à la fois la valeur de la touche et son étiquette. Donc, disons que j'ai un tableau dans mon contrôleur appelé impactOptions et une ng-repeat directive visant à créer les boutons:
<div ng-repeat="option in impactOptions" >
<input type="radio" ng-model="data.modelObject.val" id="rbGroup{{option.id}} ng-value="option.id"/>
<label for="rbGroup{{option.id}}">{{option.text}}</label>
</div>
Le problème de cette configuration est que de cette manière je ne suis économie de la valeur de la touche, alors que je voudrais économiser du label. J'ai vraiment besoin de lui plus tard.
Je suis à la recherche d'un moyen de faire quelque chose comme ceci
<input type="radio" model="data.modelObject" ng-value="val:option.id, text:option.text"/>
ng-change
pour appeler une fonction dans votre contrôleur, qui définit la val
et text
(bien que je ne suis pas sûr de ce que option
est)c'est la façon dont je suis maintenant, mais je me demandais si il est possible ce que je demande, elle permettrait d'accélérer la chose BEAUCOUP
En fait, il ne serait pas intelligent assez déroutant (je ne sais toujours pas sont les
val
et text
proprrties censé être utilisé). Pourquoi ne pas créer une directive ?eh bien, je ne sais pas si ça va être intelligent, mais il serait très utile pour la configuration que j'ai. À propos de la directive, je viens juste de commencer Angulaire, et il va probablement être un peu écrasante....
Je l'ai déjà écrit ma première directive, afin de créer un "réutilisable", mais dans ce cas, chaque groupe de boutons radio devront être légèrement différents attributs, alors peut-être la rédaction d'une directive serait très complexe
OriginalL'auteur Sr.Richie | 2014-05-09
Vous devez vous connecter pour publier un commentaire.
Vous pouvez avoir un objet comme valeur dans
ng-value
:exemple de violon
Les valeurs dans
ng-value
peut également être dynamique ainsi par demande:mise à jour exemple de violon
bien sûr, cela est possible (jsfiddle.net/7Dgsx/2)
opt
est défini parng-init
donc je n'ai pas besoin de créer un contrôleurje vous remercie encore. Je ne comprends pas où est le problème. Si j'essaie d'utiliser {val:opt.id, texte:opt.texte}, il se bloque. Je peux utiliser {val:{{option.id}} }, mais si j'essaie d'utiliser {val:{{option.id}}, texte:{{option.texte}}}, il se bloque de nouveau. Désolé, je suis un n00b angulaire
Pas de problème, la première partie semble bon, mais peut causer des problèmes si vous n'avez pas défini l'option de l'objet. Vous pouvez définir l'objet comme je l'ai fait via ng-unité, ou dans le contrôleur, ce qui est suggéré... $champ d'application.option = {id:5, texte: 'abc'};
l'option est évidemment définis dans le ng-repeat directive, comme vous pouvez le voir dans la question de code.... Argh!
OriginalL'auteur Brocco
Vous pouvez utiliser
ng-value="option"
:Quand vous en avez besoin
id
vous pouvez l'avoir à partir de$scope.option.id
et quand vous en avez besointext
vous pouvez y accéder à partir de$scope.option.text
. Vérifier ma réponse ici. Cela fonctionne pour votre cas?OriginalL'auteur Diana Nassar