Javascript 用于嵌套ng重复的角度唯一过滤器
我想插入内容,这样它就可以在复选框旁边打印每个学生的位置,而不会有任何重复的位置。我的HTML如下所示:Javascript 用于嵌套ng重复的角度唯一过滤器,javascript,json,angularjs,filter,unique,Javascript,Json,Angularjs,Filter,Unique,我想插入内容,这样它就可以在复选框旁边打印每个学生的位置,而不会有任何重复的位置。我的HTML如下所示: <ul ng-repeat="group in groups"> <li ng-repeat="student in group.students | unique : 'location'"> <input type="checkbox" id="location"> <label for="location" ng-rep
<ul ng-repeat="group in groups">
<li ng-repeat="student in group.students | unique : 'location'">
<input type="checkbox" id="location">
<label for="location" ng-repeat="loc in student.location | unique : 'loc'">{{loc}}</label>
</li>
</ul>
它印的是加利福尼亚州、密歇根州和加利福尼亚州。我认为这是因为唯一列表在进入另一个组时重置。我不确定如何处理嵌套对象。有人能解释一下我做错了什么吗 您将无法在筛选器中执行此操作,因为您是正确的,每个组都会重置它。您需要先让某个东西组合这些组,然后在组合的组中循环。您将无法在筛选器中执行此操作,因为您是正确的,每个组都会重置它。你需要先让一些东西将这些组组合在一起,然后在组合后的组中循环。是的。这确实是因为你进入了另一个组。注意提问时使用的angular的版本也很有帮助,有时在特定版本中事情会更容易。是的。这确实是因为你进入了另一个组。注意你在提问时使用的是哪个版本的angular也很有帮助,有时在特定版本中事情会更容易。谢谢你的回答。我不完全确定解决这个问题的最佳方法是什么。我在考虑是否可以手动获取JSON数组,并使用香草javascript处理所有这些内容?Angular 1.4有一个合并的概念,这足以满足您的需要。角度合并(object1,object2);然而,我不知道你是什么版本。你可以像你说的那样使用vanilla js并组合对象。谢谢,我一定会去看看的@glocklesnar如果这是一个很好的答案,你可以标记为接受的答案,否则让我知道,如果你需要任何其他帮助。感谢回复。我不完全确定解决这个问题的最佳方法是什么。我在考虑是否可以手动获取JSON数组,并使用香草javascript处理所有这些内容?Angular 1.4有一个合并的概念,这足以满足您的需要。角度合并(object1,object2);然而,我不知道你是什么版本。你可以像你说的那样使用vanilla js并组合对象。谢谢,我一定会去看看的@glocklesnar如果这是一个很好的答案,你可以标记为接受的答案,否则让我知道,如果你需要任何其他帮助。
app.filter('unique', function() {
return function(input, key) {
var uniqueList = [];
var unique = {};
for(var i = 0; i < input.length; i++) {
if(typeof unique[input[i][key]] == "undefined") {
unique[input[i][key]] = "";
uniqueList.push(input[i]);
}
}
return uniqueList;
};
});
"groups" : [
{
"name": "a",
"students" : [
{
"student_name" : "Nate",
"location" : "California"
},
{
"student_name" : "Natalie",
"location": "Michigan"
},
{
"student_name" : "Tim",
"location" : "California"
}
]
},
{
"name" : "b",
"students" : [
{
"student_name" : "Brian",
"location" : "California"
}
]
}
]