J'ai cherché sur Google et je ne trouve rien à ce sujet.
J'ai ce code.
<select ng-model="somethingHere"
ng-options="option.value as option.name for option in options"
></select>
Avec des données comme celle-ci
options = [{
name: 'Something Cool',
value: 'something-cool-value'
}, {
name: 'Something Else',
value: 'something-else-value'
}];
Et la sortie est quelque chose comme ça.
<select ng-model="somethingHere"
ng-options="option.value as option.name for option in options"
class="ng-pristine ng-valid">
<option value="?" selected="selected"></option>
<option value="0">Something Cool</option>
<option value="1">Something Else</option>
</select>
Comment est-il possible de définir la première option dans les données comme valeur par défaut afin d'obtenir un résultat comme celui-ci.
<select ng-model="somethingHere" ....>
<option value="0" selected="selected">Something Cool</option>
<option value="1">Something Else</option>
</select>
javascript
angularjs
html-select
iConnor
la source
la source
a **single** hard-coded <option> element ... can be nested into the <select> element.
Les options ne pouvaient pas déjà faire partie du balisage.Réponses:
Vous pouvez simplement utiliser ng-init comme ceci
la source
Si vous voulez vous assurer que votre
$scope.somethingHere
valeur n'est pas écrasée lors de l'initialisation de votre vue, vous voudrez fusionner (somethingHere = somethingHere || options[0].value
) la valeur dans votre ng-init comme ceci:la source
options
être vide? Comme en cas deoptions
données provenant d'une source externe.ng-init="somethingHere= somethingHere || 'Select one' "
j'ai essayé comme ça. mais ça n'a pas marché. ce qui ne va pas dans mon codeEssaye ça:
HTML
Javascript
Plunker ici .
Si vous voulez vraiment définir la valeur qui sera liée au modèle, changez l'
ng-options
attribut enet le Javascript pour
Un autre plongeur ici considérant ce qui précède.
la source
Une seule réponse de Srivathsa Harish Venkataramana mentionnée
track by
qui est en effet une solution pour cela!Voici un exemple avec Plunker (lien ci-dessous) de la façon d'utiliser
track by
dans selectng-options
:Si
selectedCity
est défini sur la portée angulaire et qu'il a uneid
propriété avec la même valeur que n'importe laquelleid
decity
lacities
liste, il sera automatiquement sélectionné lors du chargement.Voir la documentation source pour plus de détails: https://code.angularjs.org/1.3.15/docs/api/ng/directive/select
la source
Je pense que, après l'inclusion de «track by», vous pouvez l'utiliser dans ng-options pour obtenir ce que vous vouliez, comme suit
Cette façon de faire est meilleure car lorsque vous souhaitez remplacer la liste de chaînes par une liste d'objets, vous allez simplement changer cela en
où quelque chose est bien sûr un objet avec le nom et l'identifiant des propriétés. Veuillez noter que 'as' n'est pas utilisé de cette façon pour exprimer les options ng, car il ne définira que la valeur et vous ne pourrez pas la changer lorsque vous utilisez track by
la source
La réponse acceptée utilise
ng-init
, mais le document dit d'éviter si possible ng-init.Vous pouvez également utiliser
ng-repeat
au lieu deng-options
pour vos options. Avecng-repeat
, vous pouvez utiliserng-selected
avecng-repeat
des propriétés spéciales. c'est-à-dire $ index, $ impair, $ even pour que cela fonctionne sans aucun codage.$first
est l'une des propriétés spéciales ng-repeat.---------------------- EDIT ----------------
Bien que cela fonctionne, je préférerais @ mik-t's répondez lorsque vous savez quelle valeur sélectionner, https://stackoverflow.com/a/29564802/454252 , qui utilise
track-by
etng-options
sans utiliserng-init
oung-repeat
.Cette réponse ne doit être utilisée que lorsque vous devez sélectionner le premier élément sans savoir quelle valeur choisir. par exemple, je l'utilise pour la complétion automatique qui nécessite de choisir le premier élément tout le temps.
la source
ng-options
est plus rapide et plus optimisé queng-repeat
.<select>
modèle de est attribué via laselect as
partie de l'expression de compréhension», «réduction de la consommation de mémoire en ne créant pas de nouvelles possibilités pour chaque instance répétée "," augmentation de la vitesse de rendu en créant les options dans undocumentFragment
au lieu de individuellement "Ma solution à cela était d'utiliser du HTML pour coder en dur mon option par défaut. Ainsi:
En HAML:
En HTML:
Je veux que mon option par défaut renvoie toutes les valeurs de mon API, c'est pourquoi j'ai une valeur vide. Excusez également mon haml. Je sais que ce n'est pas directement une réponse à la question du PO, mais les gens trouvent cela sur Google. J'espère que ceci aide quelqu'un d'autre.
la source
Utilisez le code ci-dessous pour remplir l'option sélectionnée à partir de votre modèle.
la source
Selon le nombre d'options dont vous disposez, vous pouvez mettre vos valeurs dans un tableau et remplir automatiquement vos options comme ceci
la source
Dans mon cas, je devais insérer une valeur initiale uniquement pour dire à l'utilisateur de sélectionner une option, donc j'aime le code ci-dessous:
Lorsque j'ai essayé une option avec la valeur! = D'une chaîne vide (nulle), l'option a été remplacée par angulaire, mais, lorsque j'ai mis une option comme ça (avec une valeur nulle), la sélection apparaît avec cette option.
Désolé par mon mauvais anglais et j'espère que j'aiderai quelque chose avec ça.
la source
Utilisation
select
dengOptions
et définition d'une valeur par défaut:Voir la documentation ngOptions pour plus d'
ngOptions
exemples d'utilisation.plnkr.co
Documentation officielle sur HTML
SELECT
élément avec liaison de données angulaire.Liaison
select
à une valeur non chaîne via l'ngModel
analyse / formatage:plnkr.co
Autre exemple:
jsfiddle
la source
Cela a fonctionné pour moi.
la source
Dans mon cas, car la valeur par défaut varie d'un cas à l'autre dans le formulaire. J'ajoute un attribut personnalisé dans la balise de sélection.
dans les directives, j'ai créé un script qui vérifie la valeur et lorsque angulaire le remplit définit l'option avec cette valeur sur sélectionnée.
})
vient de traduire cela à partir de coffescript à la volée au moins le coup est correct sinon le truc du trou.
Ce n'est pas le moyen le plus simple mais faites-le lorsque la valeur varie
la source
En réponse à la réponse de Ben Lesh , il devrait y avoir cette ligne
au lieu de
C'est,
la source
Utilisez simplement
ng-selected="true"
comme suit:la source
Je définirais le modèle dans le contrôleur. Ensuite, la sélection sera par défaut à cette valeur. Ex: html:
Contrôleur angulaire (en utilisant la ressource):
la source
Cela fonctionne pour moi
la source
ng-init
car vous définissez un ngModel.Si vous utilisez
ng-options
pour effectuer un rendu vers le bas, laoption
même valeur que celle de ng-modal est sélectionnée par défaut. Prenons l'exemple:L'option ayant la même valeur de
list.key
etselectedItem
est donc sélectionnée par défaut.la source
J'avais besoin que la valeur par défaut «Veuillez sélectionner» ne soit pas sélectionnable. J'avais également besoin de pouvoir conditionnellement définir une option sélectionnée par défaut.
J'ai réalisé cela de la manière simpliste suivante: Code JS: // Retournez ces 2 pour tester la valeur par défaut sélectionnée ou aucune valeur par défaut avec le texte par défaut «Veuillez sélectionner» //$scope.defaultOption = 0; $ scope.defaultOption = {clé: '3', valeur: 'Option 3'};
HTML:
J'espère que cela aide quelqu'un d'autre qui a des exigences similaires.
Le "Please Select" a été accompli grâce à la réponse de Joffrey Outtier ici .
la source
Si vous avez quelque chose au lieu de simplement lancer la partie date, vous pouvez l'utiliser
ng-init()
en le déclarant dans votre contrôleur et en l'utilisant en haut de votre HTML. Cette fonction fonctionnera comme un constructeur pour votre contrôleur, et vous pourrez y initier vos variables.la source
la source
essayez ceci dans votre contrôleur angulaire ...
$ somethingHere = {name: 'Something Cool'};
Vous pouvez définir une valeur, mais vous utilisez un type complexe et l'angulaire recherchera la clé / valeur à définir dans votre vue.
Et, si cela ne fonctionne pas, essayez ceci: ng-options = "option.value as option.name for option in options track by option.name"
la source
Je pense que le moyen le plus simple est
la source