2013-11-20 11 views
66

Zasadniczo próbuję wypełnić pole wyboru, ale połączyć wartości z kolumny first_name i kolumny last_name.Czy możliwe jest łączenie wartości w Angular ng-options

Co chcę zrobić (nie działa):

<select ng-model="buyers" ng-options="b.id as (b.first_name + " " + b.last_name) for b in buyers"></select> 

Co działa:

<select ng-model="buyers" ng-options="b.id as b.first_name for b in buyers"></select> 
+4

Zrobiłem to wcześniej i to działa. Moja składnia 's.subsidiary.sid._value_ as s.subsidiary.subsidiary_no.value_ + ':' + s.subsidiary.subsidiary_name._value_ dla s w spółkach zależnych. Jedyną różnicą, jaką widzę, jest to, że nie użyłem nawiasów. Spróbuj je usunąć i sprawdź, czy działa. –

+0

Inną opcją byłoby utworzenie właściwości o nazwie pełna_nazwa ze zsumowaną wartością przed powiązaniem danych. –

+3

W porządku, problemem były podwójne cytaty, potrzebne pojedyncze. – PatrickCurl

Odpowiedz

121

cudzysłowy są ważne. Nie będzie działać z podwójnymi cudzysłowami w cudzysłowach lub pojedynczych cudzysłowach w cudzysłowach.

Co działa:

<select ng-model="buyers" ng-options='b.id as (b.first_name + " " + b.last_name) for b in buyers'></select> 
+0

Dodałem tę odpowiedź, aby usunąć pytanie z listy pytań bez odpowiedzi AngularJS. – boatcoder

+1

Wystarczy napisać o czymś, co mnie potknęło: Cytaty są ważne. Nie będzie działać z podwójnymi cudzysłowami w cudzysłowach lub pojedynczych cudzysłowach w cudzysłowach. – Qaz

+1

Bezwzględnie cytaty dbl wewnątrz cytatów dbl nie działają, ponieważ kończą bieżący ciąg znaków i rozpoczynają kolejny. Musisz wymieszać cytaty jak wyżej. – boatcoder

4

można złączyć ciąg przy użyciu tej synthax:

ng-options="i.x + ' ' + i.y for i in items" 

Poniższy urywek złączyć firstname i lastname:

angular.module('myApp', []); 
 

 
function MyCtrl($scope) { 
 
    $scope.names = [{firstname: 'Jon', lastname: 'Snow'}, 
 
        {firstname: 'Rob', lastname: 'Stark'}, 
 
        {firstname: 'Ned', lastname: 'Stark'}]; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 
<div ng-app="myApp" ng-controller="MyCtrl"> 
 
    <select ng-model="selected" ng-options="n.firstname + ' ' + n.lastname for n in names"></select> 
 
    selected: {{selected}} 
 
</div>

Zauważ, że nawiasy nie są wymagane, ale może poprawić czytelność.

Powiązane problemy