2014-01-07 76 views
17

我有以下的JSON對象:如何在AngularJS中選擇選項中的文本格式?

$scope.values = [ 
     { 
      "id": 2, 
      "code": "Code 1", 
      "name": "Sample 1" 
     }, 
     { 
      "id": 4, 
      "code": "Code 2", 
      "name": "Sample 2" 
     }, 
     { 
      "id": 7, 
      "code": "Code 3", 
      "name": "Sample 3" 
     } 
    ]; 

在選擇標籤,我有這樣的:

<select name="c_id" ng-options="c.id as c.code for c in values"></select> 

生成的選擇方案是:

Code 1 
Code 2 
Code 3 

有什麼辦法格式選項中的文字如下所示?

Code 1 -- Sample 1 
Code 2 -- Sample 2 
Code 3 -- Sample 3 

或者我只需在將它們附加到模型之前準備值? 任何幫助表示讚賞。謝謝。

回答

38

您可以通過使用此語法做到這一點:

ng-options="c.id as (c.code + ' -- '+ c.name) for c in values" 

例子:http://jsfiddle.net/cherniv/6EkL7/1/

或者有人可能喜歡下一個語法:

ng-options="c.id as [c.code,c.name].join(' -- ') for c in values" 

例子: http://jsfiddle.net/cherniv/6EkL7/2/

但在某些情況下,在使用過濾器,就像理性:

app.filter("formatter",function(){ 
    return function(item){ 
     return item.code+ " -- " + item.name; 
    } 
}) 

和:ng-options="c.id as c|formatter for c in values"

例子:http://jsfiddle.net/cherniv/K8572/

+1

真棒的方式來實現這一目標。石榴石! –

+1

THANKs .. This works .. awesome ... – Melvin

+1

@Melvin不客氣! – Cherniv

4

當然,你可以做到這一點通過調用ng-repeatoption

HTML

<select> 
     <option ng-repeat="v in values" value="{{v.id}}"> 
      {{v.code}} -- {{v.name}} 
     </option> 
    </select> 

JS

相同

演示Fiddle

相關問題