2015-07-18 55 views
1

假設我們有一個對象數組:如何在角度上迭代對象數組,但只顯示{{}}屬性?

var items = [ 
    { 
    id: 1, 
    name: 'name1' 
    }, { 
    id: 2, 
    name: 'name2' 
    }, 
    { 
    id: 3, 
    name: 'name3' 
    } 
]; 

,我們希望以此來遍歷它在HTML:

{{ctrl.items}} 

期待這在UI:

name1, name2, name3 

這是可能?或者我必須使用ngRepeat嗎?

我想主要是這樣做是爲了採取內部limitTo過濾器的優勢{{}}

+0

你的問題不完全清楚。是的,你會使用'ng-repeat',並且'limitTo'在'ng-repeat'中完美地工作。 – Claies

回答

1

您可以同時使用NG-重複和limitTo過濾器實現這一點:

<div ng-repeat="item in items | limitTo: 3">{{ item.name }}</div> 

編輯

Here is a working plunkr.

+0

你將如何在每個項目之間實現逗號?最後一項之後沒有逗號。 –

+0

@ShermanS查看最新的plunkr:http://plnkr.co/edit/0WnCSit7nKu6lzwuaRu9 –

3

,你可以在你的HTML

{{ctrl.getNames(ctrl.items)}} 

,並在控制器中添加此功能,使用這樣的代碼

this.getNames = function(items){ 
    return items.map(function(item){return item.name;}).join(", "); 
} 

,也可以彌補這方面的過濾器,,

app.filter("names",function(){ 
    return function(input){ 
     return input.map(function(item){return item.name;}).join(", "); 
    }; 
}); 

,並在你的HTML中使用這

{{ctrl.items | names}} 
+0

包含逗號的最簡單解決方案 – charlietfl

+0

將{{ctrl.items |名字| limitTo:2}}有效嗎? –

+0

你應該在名稱過濾之前使用limitTo過濾器,所以它會是這樣的 {{ctrl.items | limitTo:2 |名稱}} –