2013-11-20 72 views
66

基本上,我試圖填充選擇框但將first_name列和last_name列的值連接起來。是否有可能連接Angular ng選項中的值

我想做的事情(不工作):

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

什麼工作:

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

我以前做過這件事,它確實有效。我的語法's.subsidiary.sid._value_ as s.subsidiary.subsidiary_no._value_ +':'+ s.subsidiary.subsidiary_name._value_ for s in subsidiary'。我能看到的唯一區別是我沒有使用圓括號。嘗試刪除它們,看看它是否有效。 –

+0

另一種選擇是在綁定數據之前使用連接的值創建一個名爲full_name的屬性。 –

+3

好的問題是雙引號,需要單個。 – PatrickCurl

回答

121

的報價是非常重要的。它不適用雙引號內的雙引號或單引號內的單引號。

什麼工作:

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

我添加了此答案,以從未答覆的AngularJS問題列表中刪除問題。 – boatcoder

+1

只是一個關於絆倒了我的東西的說明:引號很重要。它不適用雙引號內的雙引號或單引號內的單引號。 – Qaz

+1

dbl引號內部的絕對dbl引號不起作用,因爲它們結束當前字符串並開始另一個字符串。你必須混合上面的引號。 – boatcoder

4

您可以使用此synthax將字符串:

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

下面的代碼片斷串連firstnamelastname

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>

注意括號並不需要,但它可能會提高可讀性

相關問題