我对使用ng-repeat循环的数据集进行了ng-repeat:
<div id="songlist">
<p ng-repeat="data in output">{{data.nm}}</p>
</div>
其中输出的内容如下:
<div id="songlist">
<p>Across The Universe</p>
<p>Blackbird</p>
<p>Baby In Black</p>
</div>
我想做的只是输出每个歌曲名称的唯一首字母,以便输出:
<div id="songlist">
<p>A</p>
<p>B</p>
</div>
关于如何实现这一目标的任何想法?谢谢!
答案 0 :(得分:3)
如果你想要一个Angular过滤器解决方案,那么这可能会为你做到这一点:
app.filter('firstLetterFilter', [function () {
return function (list) {
var firstLetters = [];
list.forEach(function (item) {
var firstLetter = item.nm.charAt(0);
if (firstLetters.indexOf(firstLetter) === -1) {
firstLetters.push(firstLetter);
}
});
return firstLetters;
}
}]);
它在此Plunker工作:http://plnkr.co/edit/RS0kSNj3sERayJBjDqF4
答案 1 :(得分:1)
从包含所需功能的方法创建新模型,然后使用ng-repeat迭代该对象
答案 2 :(得分:1)
http://plnkr.co/edit/aj2mass5mZTM3VmGjSIk?p=preview
请参阅上面的过滤器
<div class="item" ng-repeat="person in people | firstUnique">
app.filter('firstUnique',function() {
return function( persons) {
var filtered = [];
var p = {};
angular.forEach(persons, function(item) {
var first = item.name.substring(0,1);
if(p[first]){
}else{
p[first] = first;
filtered.push({name :first});
}
});
return filtered;
};
});