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
Ajout d'un JsFiddle ici
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>
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"
Vous pouvez simplement ajouter
track by version.id
à votre ng-options.