J'utilise Angular JS et je dois définir une option sélectionnée d'un contrôle de liste déroulante à l'aide de angular JS. Pardonnez-moi si c'est ridicule mais je suis nouveau avec Angular JS
Voici le contrôle de la liste déroulante de mon html
<select ng-required="item.id==8 && item.quantity > 0" name="posterVariants"
ng-show="item.id==8" ng-model="item.selectedVariant"
ng-change="calculateServicesSubTotal(item)"
ng-options="v.name for v in variants | filter:{type:2}">
</select>
Après qu'il soit peuplé, je reçois
<select ng-options="v.name for v in variants | filter:{type:2}" ng-change="calculateServicesSubTotal(item)"
ng-model="item.selectedVariant" ng-show="item.id==8" name="posterVariants"
ng-required="item.id==8 && item.quantity > 0" class="ng-pristine ng-valid ng-valid-required">
<option value="?" selected="selected"></option>
<option value="0">set of 6 traits</option>
<option value="1">5 complete sets</option>
</select>
Comment puis-je configurer le contrôle pour value="0"
être sélectionné?
<option value="0" ng-selected="true">set of 6 traits</option>
Réponses:
J'espère comprendre votre question, mais la
ng-model
directive crée une liaison bidirectionnelle entre l'élément sélectionné dans le contrôle et la valeur deitem.selectedVariant
. Cela signifie que changeritem.selectedVariant
dans JavaScript, ou changer la valeur dans le contrôle, met à jour l'autre. Siitem.selectedVariant
a une valeur de0
, cet élément doit être sélectionné.Si
variants
est un tableau d'objets,item.selectedVariant
doit être défini sur l'un de ces objets. Je ne sais pas quelles informations vous avez dans votre champ d'application, mais voici un exemple:JS:
HTML:
Cela laisserait l'élément «b» à sélectionner.
la source
$scope
variable. Donc, en supposant que vous êtes dans une seule portée, dans votre contrôleur, vous pourriez dire$scope.item.selectedVariant = 0
, pour définir la valeur sélectionnée par défaut. Vous pouvez également définir la variable directement sur le contrôle, en HTML, en utilisant la directive ng-init , mais cela devient assez compliqué à mon avis!variants
est sur votre portée? Vous devrez définiritem.selectedVariant
exactement un élément devariants
.Je ne sais pas si cela aidera quelqu'un ou non, mais comme j'étais confronté au même problème, j'ai pensé à partager comment j'avais trouvé la solution.
Vous pouvez utiliser piste par attribut dans votre
ng-options
.Supposons que vous ayez:
Vous pouvez mentionner votre
ng-options
comme:J'espère que cela aidera quelqu'un à l'avenir.
la source
ngModel
correctement, mais cela n'a pas fonctionné jusqu'à ce que j'ai ajouté letrack by
! Je vous remercie!Si vous lui attribuez la valeur 0,
item.selectedVariant
il doit être sélectionné automatiquement. Découvrez un exemple sur http://docs.angularjs.org/api/ng.directive:select qui sélectionne la couleur rouge par défaut en attribuant simplement$scope.color='red'
.la source
Je vois ici déjà écrit de bonnes réponses, mais parfois écrire la même chose sous une autre forme peut être utile
la source
Manière simple
Si vous avez un Users comme réponse ou un Array / JSON que vous avez défini, vous devez d'abord définir la valeur sélectionnée dans le contrôleur, puis vous mettez le même nom de modèle en html. Cet exemple que j'ai écrit pour expliquer de la manière la plus simple.
Exemple simple à l'
intérieur du contrôleur:
Votre HTML
exemple complexe
Inside Controller:
Votre HTML
la source
Cela peut être utile. Les fixations ne fonctionnent pas toujours.
Par exemple. Vous remplissez le modèle source de la liste d'options à partir de rest-service. La valeur sélectionnée était connue avant de remplir la liste et a été définie. Après avoir exécuté la demande de repos avec l'option $ http list, faites-le. Mais l'option sélectionnée n'est pas définie. Pour des raisons inconnues, AngularJS dans shadow $ digest ne s'exécutant pas sélectionné comme il devrait l'être. Je dois utiliser JQuery pour définir la sélection. C'est important! Angular in shadow ajoute un préfixe à la valeur de attr "value" pour généré par ng-repeat optinos. Pour int, c'est "number:".
la source
Essayez ce qui suit:
Fichier JS
Fichier HTML
la source
C'est le code que j'ai utilisé pour la valeur sélectionnée
essayez ceci sur un cadre angulaire
la source
JS:
la source