2013-06-20 6 views
3

Actuellement, j'essaie de charger une selectbox en utilisant la directive ng-options.NG-Options ne me laisse pas définir la valeur

Cependant, je ne suis pas en mesure de changer la valeur des options créées, cela va de 0-3 alors que je veux que ces valeurs soient identiques à l '"eigenschap_id" que je traverse.

Il doit avoir des valeurs de 23-26 au lieu de 0-3

Où est-il mal tourné?

Voici le code que j'utilise.

Controller:

$scope.eigenschappen.game = categories.Game; 

Jsonstring/objet:

[{"cat_id":6,"cat_name":"Game","eigenschap_name":"RPG","eigenschap_id":23},{"cat_id":6,"cat_name":"Game","eigenschap_name":"Strategie","eigenschap_id":24},{"cat_id":6,"cat_name":"Game","eigenschap_name":"Avontuur","eigenschap_id":25},{"cat_id":6,"cat_name":"Game","eigenschap_name":"Simulatie","eigenschap_id":26}] 

Voir le Html

<select data-ng-options="i.eigenschap_id as i.eigenschap_name for i in eigenschappen.game" ng-model="chosen"></select> 

html généré

<select ng-model="chosen" data-ng-options="i.eigenschap_id as i.eigenschap_name for i in eigenschappen.game" class="ng-pristine ng-valid"> 
    <option value="?" selected="selected"></option> 
    <option value="0">RPG</option> 
    <option value="1">Strategie</option> 
    <option value="2">Avontuur</option> 
    <option value="3">Simulatie</option> 
</select> 

Répondre

8

Lorsque Angular génère les options de sélection HTML, l'attribut value (de chaque élément d'option) peut ne pas être ce que vous attendez ... il est défini comme suit: . Lorsque vous utilisez array comme source de données, la valeur est définie sur l'index de tableau . Lorsque vous utilisez un objet comme source de données, la valeur est définie sur le nom de clé/propriété

Lorsque l'utilisateur sélectionne l'une des options, Angular utilise l'index (ou la touche) pour rechercher la valeur dans array (ou object) - - cette valeur recherchée est ce que le modèle est défini. (Ainsi, le modèle n'est pas défini à la valeur que vous voyez dans le HTML! Cela provoque beaucoup de confusion.)

Par exemple, pour une source de données de tableau, Angular définira la valeur du modèle à la valeur dans le tableau au index spécifié par le paramètre de valeur d'option sélectionné. Si votre tableau de sources de données est [2013, 2014, 2015], le code HTML généré aura des valeurs de 0, 1, 2 pour les éléments d'options. Si vous sélectionnez le 2ème élément, angulaire regarde dans le tableau [1] pour trouver la valeur 2014, ce qui est ce que le modèle est alors mis à

Source: Mark RajCok commentaire sur http://docs.angularjs.org/api/ng.directive:select

+0

La clé fait que je ne savais pas est que la valeur est sans rapport avec ce que le modèle va réellement contenir. En cas de doute, vous pouvez afficher la valeur du modèle de sélection à l'écran avec {{the_selects_model}}. Merci. –

Questions connexes