web-dev-qa-db-fra.com

Comment définir la valeur par défaut de la zone de sélection dans angularjs

J'ai un formulaire qui est utilisé pour éditer un objet et je ne peux pas sélectionner une valeur dans la zone de sélection.

J'ai un tableau JSON qui représente le pour être édité et ressemble à ceci:

       $scope.item = [{
    "objectID": "76",
    "versionID": "0",
    "versionName": "CURRENT",
    "objectName": "xyz",
}]

maintenant, je suis en même temps en train de remplir une zone de sélection d'un autre tableau JSON qui ressemble à ceci:

$scope.versions = [{
    "id": "0",
    "description": "CURRENT",
    "name": "CURRENT"
},
    {
    "id": "114",
    "description": "description of Version 2",
    "name": "version2"
},
    {
    "id": "126",
    "description": "description of Version 3",
    "name": "version3"
},
    {
    "id": "149",
    "description": "description of Version 4",
    "name": "version4"
}] 

dans ma page Web, je crée la zone de sélection comme suit:

Version:<select ng-model="item.versionID" ng-selected="item.versionID" ng-options="version.name for version in versions" required>

la zone de sélection est remplie pour moi, mais il convient de sélectionner la valeur correspondant à la version dans item. J'ai essayé à la fois versionID et versionName, j'ai même essayé de définir ng-selected="0" et ça ne marche même pas.

J'ai regardé ici sur SO, le site Angularjs et googlé et parcouru d'innombrables tutoriels, mais j'ai toujours des problèmes avec cela. Je n'arrive tout simplement pas à voir en quoi consiste le problème, donc une aide grandement appréciée

JSFiddle Ajouté

Ajout d'un JsFiddle ici

62
jonnie

Vous pouvez utiliser simplement ng-init comme ceci

<select ng-init="somethingHere = options[0]" ng-model="somethingHere" ng-options="option.name for option in options"></select>
119
aemonge

Il ne définit pas la valeur par défaut car votre modèle n'est pas lié aux propriétés id ou name, il est lié à chaque objet version. Essayez de définir le versionID sur l'un des objets et cela devrait fonctionner, c'est-à-dire que $scope.item.versionID = $scope.versions[2];

Si vous voulez définir par la propriété id, vous devez ajouter le select as syntaxe:

ng-options="version.id as version.name for version in versions"

http://jsfiddle.net/LrhAQ/1/

30
noj

Vous pouvez simplement ajouter

track by version.id

à votre ng-options.