Problema: você tem uma coleção de objetos que são usados para construir um select
e deseja vincular a opção selecionada a uma única propriedade.
TL; DR; Solução: use ng-repeat
+ ng-value
para construir o select
.
Detalhes:
ng-value
atributo recebe uma expressão angular que será usada para vincular ng-model
. Tentei usar, ng-options
mas só funcionou para mim durante o uso ng-repeat
.
Código do controlador:
app.controller('CWExampleController',function(){
//collection:
this.persons = [{name:'Mike',id:1},{name:'Molly',id:2}];
//ng-model property:
this.personId = null;
})
HTML:
<div ng-controller="CWExampleController as ctrl">
<select ng-model="ctrl.personId" ng-value="p.id">
<option ng-repeat="p in ctrl.persons" value="{{p.id}}">{{p.name}}</option>
</select>
<p>Selected person id: {{ctrl.personId}}</p>
</div>