2012-11-28 9 views
32

Ho una collezione di oggetti con informazioni utente.AngularJS ng-options con diversi campi

"Id": "1", 
"Firstname": "ABCDEF", 
"Lastname": "GHIJK", 
"Middlename": "" 

Nei miei selezionare le opzioni voglio visualizzare due campi - Firstname Lastname. Non capisco come farlo e come associarlo a ng-model.

risposta

11

Considerando il formato del vostro oggetto array per essere come questo.

$scope.userInfo = [ 
        {"Id": "1", "Firstname": "ACDEF", "Lastname": "GHIJK", "Middlename": ""}, 
        {"Id": "2", "Firstname": "BADEF", "Lastname": "HIGJK", "Middlename": ""}, 
        {"Id": "3", "Firstname": "CDBEF", "Lastname": "IIHJK", "Middlename": ""}, 
       ] 

È possibile visualizzare due campi come questo e collegarli al modello come mostrato di seguito.

<select ng-model="userInfo" ng-options="s.Firstname +' '+ s.Lastname for s in userInfo" class="span2"> </select> 
3

Solo un aggiornamento ulteriore,

ho dovuto mostrare il Cognome racchiuso tra parentesi: ecco come ho modificato la risposta e ottenuto che funziona.

<select 
    name="users" 
    ng-model="selectedUser" 
    ng-options="user.Id as user.Firstname + ' (' + user.Lastname + ') ' for user in users"> 
</select> 
0

Theres è sempre in uno scenario di non ng-options, dove è possibile associare due params dal ng-repeat oggetto:

<select name="user" ng-model="vm.asignedUser"> 
    <option value="">Select user</option> 
    <option value="{{ {'name':user.name, 'id': user.id} }}" ng-repeat="user in vm.users"> 
     {{ user.nombreLargo }} 
    </option> 
    </select> 
Problemi correlati