2012-11-28 11 views
32

Mam kolekcję obiektów z informacjami o użytkowniku.AngularJS ng-options with several fields

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

W moich wybranych opcjach chcę wyświetlić dwa pola - Firstname Lastname. Nie rozumiem, jak to zrobić i jak powiązać go z ng-model.

Odpowiedz

11

Zważywszy formatu Twojego obiektu tablicy tak być.

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

Można wyświetlić dwa takie pola i powiązać z modelem, jak pokazano poniżej.

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

Wystarczy dodatkowa zmiana,

musiałem pokazać nazwisko ujęty w nawiasy tak oto jak ja zmodyfikowana odpowiedź i dostał pracę.

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

Tam jest zawsze w nie ng-options scenariusza, w którym można powiązać dwa params z ng-repeat pozycji:

<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>