<tr ng-repeat="x in list">
.....<td>{{x.Name}}</td>
,视图是:
a
a
a
a
目前,一切都是对的 但是如果此表中已经存在“Name”,我希望该表只返回一次值。我需要的是这个观点:
a
因为“姓名”拥有许多“a”值。
我希望我对我的问题足够准确,因为我是AngularJS的新手。
谢谢。
EDIT1 :我的控制器视图:
myApplicationModule.controller('controllertable',['$ scope','$ routeParams',function($ scope,$ routeParams)
{
$ scope.list = list;
}]);
引用文件.json:
var list = [
{
...
"Name" = "a",
...
}
答案 0 :(得分:2)
试试这个
创建以下过滤器
app.filter('unique', function() {
return function(list, keyname) {
var output = [],
keys = [];
angular.forEach(list, function(item) {
var key = item[keyname];
if(keys.indexOf(key) === -1) {
keys.push(key);
output.push(item);
}
});
return output;
};
});
并像
一样使用它<table>
<tr ng-repeat="x in list | unique: 'name'">
<td>{{x.name}}</td>
</table>
答案 1 :(得分:1)
您可以注册自定义过滤器。
angular.module('yourApp.filters', [])
.filter('distinct', function() {
return function (list) {
var distinctList = new Array();
var j = 0;
for (var i = 0; i < list.length; i++) {
var x = list[i];
if (! containsName(distinctList, x.Name)) {
distinctList[j] = list[i];
j++;
}
}
return distinctList;
}
});
function containsName(list, name) {
for (var i = 0; i < list.length; i++) {
if (list[i].Name == name) {
return true;
}
}
return false;
}
在控制器中,将数组列表添加到$ scope:
yourAppControllers.controller('YourCtrl', ['$scope', function ($scope) {
$scope.list = [
{
Name: 'A',
email: 'a1@example.com'
},
{
Name: 'B',
email: 'b@example.com'
},
{
Name: 'A',
email: 'a2@example.com'
},
{
Name: 'C',
email: 'cc@example.com'
}
];
}]);
现在在ng-repeat语句中写下:
<table>
<tr ng-repeat="x in list | distinct">
<td>{{x.Name}}</td>
</tr>
</table>