2016-11-12 1 views
0

J'utilise ng-options pour créer un Select à partir d'un tableau d'objets. Cela fonctionne très bien, et pour les besoins de cette question, le contenu des objets n'est pas très important, il suffit de dire qu'ils ont une propriété name, une propriété value et quelques autres propriétés.Angulaire ng-options comment lier à une propriété, pas à un objet entier?

Ci-dessous le code que j'utilise pour créer le Select, et jusqu'à présent cela fonctionne très bien.

Voici ma question - quand une option est sélectionnée, ce qui est lié au modèle ng est "l'objet entier" (fl). Ce que je voudrais être lié à ng-model est juste la partie "name" (i.itemName) de l'objet. Je suppose que je peux résoudre ce problème en revenant après le fait, et quand le bouton soumettre est pressé, je peux faire défiler toutes les données, trouver l'objet lié, en extraire le nom, puis le changer pour qu'il ne soit pas lié au nom, mais ... c'est plutôt bâclé et pas vraiment comment ça devrait être géré.

Est-il possible de changer ce code afin que lorsque je sélectionne un élément, modèle ng-est lié à i.itemName et non fl?

<select chosen 
     id="{{fl.fldBasic.fldLabel}}" 
     ng-model="fl.dataValue" 
     ng-readonly="{{fl.fldBasic.attrReadOnly}}" 
     title="{{fl.help}}" 
     ng-required="{{fl.required}}" 
     class="chosen-select" 
     ng-options="i.itemName for i in fl.combo_ItemList.itemList track by i.itemValue" 
     style="width: 100%;"> 
</select> 

Répondre

3

Vous pouvez utiliser le code suivant si vous voulez lié à la ng-model itemName. Notez que vous devez supprimer la piste par ici pour qu'elle fonctionne, car elle sera évaluée comme indéfinie et la valeur du modèle ne correspondra à aucune option.

i.itemName as i.itemName for i in fl.combo_ItemList.itemList.