2014-01-07 43 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

相关问题