Javascript 基于IS AngularJS的过滤结果
我有来自JSON文件的数据。我正在显示类别列表,但我希望筛选该列表并仅显示具有“父:0”的类别Javascript 基于IS AngularJS的过滤结果,javascript,json,angularjs,filter,Javascript,Json,Angularjs,Filter,我有来自JSON文件的数据。我正在显示类别列表,但我希望筛选该列表并仅显示具有“父:0”的类别 "categories": [ { "id": 51, "slug": "knarr", "title": "Knarr", "description": "", "parent": 8,
"categories": [
{
"id": 51,
"slug": "knarr",
"title": "Knarr",
"description": "",
"parent": 8,
"post_count": 2
},
{
"id": 15,
"slug": "service-vessels",
"title": "Service Vessels",
"description": "",
"parent": 0,
"post_count": 1
}
],
请在此处检查我的代码“”您可以制作自己的角度过滤器,您可以尝试以下操作:
<div ng-controller="ListCtrl">
<ul ng-repeat="category in categories | customFilter:category">
<li>{{category.title}}</li>
</ul>
</div>
app.filter("uniqueCategoryFilter", function () {
return function (categories) {
var uniqueCategories, catIds;
uniqueCategories = [];
catIds = {};
if (categories) {
angular.forEach(categories, function (category) {
if (!catIds[category.id]) {
catIds[category.id] = true;
uniqueCategories.push(category);
}
});
}
return uniqueCategories;
};
});
<ul ng-repeat="category in categories | filter:{parent: 0}:true | uniqueCategoryFilter">
-------------------------------------------------------- HERE --^
- {{category.title}}
和过滤器:
app.filter('customFilter', [function () {
return function (items) {
var filtered = [];
angular.forEach(items, function (item) {
if(item.parent === 0 && indexOf(item) < 0) {
filtered.push(item);
}
})
return filtered;
}
}]);
app.filter('customFilter',[function(){
返回函数(项目){
var筛选=[];
角度。forEach(项目、功能(项目){
if(item.parent==0&&indexOf(item)<0){
过滤、推送(项目);
}
})
返回过滤;
}
}]);
请参阅更新的plunker:
有关过滤器签出的详细信息,请使用角形制作自己的过滤器,您可以尝试以下方法:
<div ng-controller="ListCtrl">
<ul ng-repeat="category in categories | customFilter:category">
<li>{{category.title}}</li>
</ul>
</div>
app.filter("uniqueCategoryFilter", function () {
return function (categories) {
var uniqueCategories, catIds;
uniqueCategories = [];
catIds = {};
if (categories) {
angular.forEach(categories, function (category) {
if (!catIds[category.id]) {
catIds[category.id] = true;
uniqueCategories.push(category);
}
});
}
return uniqueCategories;
};
});
<ul ng-repeat="category in categories | filter:{parent: 0}:true | uniqueCategoryFilter">
-------------------------------------------------------- HERE --^
- {{category.title}}
和过滤器:
app.filter('customFilter', [function () {
return function (items) {
var filtered = [];
angular.forEach(items, function (item) {
if(item.parent === 0 && indexOf(item) < 0) {
filtered.push(item);
}
})
return filtered;
}
}]);
app.filter('customFilter',[function(){
返回函数(项目){
var筛选=[];
角度。forEach(项目、功能(项目){
if(item.parent==0&&indexOf(item)<0){
过滤、推送(项目);
}
})
返回过滤;
}
}]);
请参阅更新的plunker:
有关过滤器签出的详细信息,请使用角形制作自己的过滤器,您可以尝试以下方法:
<div ng-controller="ListCtrl">
<ul ng-repeat="category in categories | customFilter:category">
<li>{{category.title}}</li>
</ul>
</div>
app.filter("uniqueCategoryFilter", function () {
return function (categories) {
var uniqueCategories, catIds;
uniqueCategories = [];
catIds = {};
if (categories) {
angular.forEach(categories, function (category) {
if (!catIds[category.id]) {
catIds[category.id] = true;
uniqueCategories.push(category);
}
});
}
return uniqueCategories;
};
});
<ul ng-repeat="category in categories | filter:{parent: 0}:true | uniqueCategoryFilter">
-------------------------------------------------------- HERE --^
- {{category.title}}
和过滤器:
app.filter('customFilter', [function () {
return function (items) {
var filtered = [];
angular.forEach(items, function (item) {
if(item.parent === 0 && indexOf(item) < 0) {
filtered.push(item);
}
})
return filtered;
}
}]);
app.filter('customFilter',[function(){
返回函数(项目){
var筛选=[];
角度。forEach(项目、功能(项目){
if(item.parent==0&&indexOf(item)<0){
过滤、推送(项目);
}
})
返回过滤;
}
}]);
请参阅更新的plunker:
有关过滤器签出的详细信息,请使用角形制作自己的过滤器,您可以尝试以下方法:
<div ng-controller="ListCtrl">
<ul ng-repeat="category in categories | customFilter:category">
<li>{{category.title}}</li>
</ul>
</div>
app.filter("uniqueCategoryFilter", function () {
return function (categories) {
var uniqueCategories, catIds;
uniqueCategories = [];
catIds = {};
if (categories) {
angular.forEach(categories, function (category) {
if (!catIds[category.id]) {
catIds[category.id] = true;
uniqueCategories.push(category);
}
});
}
return uniqueCategories;
};
});
<ul ng-repeat="category in categories | filter:{parent: 0}:true | uniqueCategoryFilter">
-------------------------------------------------------- HERE --^
- {{category.title}}
和过滤器:
app.filter('customFilter', [function () {
return function (items) {
var filtered = [];
angular.forEach(items, function (item) {
if(item.parent === 0 && indexOf(item) < 0) {
filtered.push(item);
}
})
return filtered;
}
}]);
app.filter('customFilter',[function(){
返回函数(项目){
var筛选=[];
角度。forEach(项目、功能(项目){
if(item.parent==0&&indexOf(item)<0){
过滤、推送(项目);
}
})
返回过滤;
}
}]);
请参阅更新的plunker:
有关筛选器的详细信息,请签出您可以筛选所需类别:
$scope.categories = $scope.categories.filter(function(category) {
return category.parent === 0;
});
您可以筛选需要的类别:
$scope.categories = $scope.categories.filter(function(category) {
return category.parent === 0;
});
您可以筛选需要的类别:
$scope.categories = $scope.categories.filter(function(category) {
return category.parent === 0;
});
您可以筛选需要的类别:
$scope.categories = $scope.categories.filter(function(category) {
return category.parent === 0;
});
Angular的
过滤器
提供程序已经能够按属性过滤列表(如ng repeat
)。在HTML中,如下所示:
<ul ng-repeat="category in categories | filter:{parent: 0}">
------------------------------ HERE --^
演示:
另外,正如一个建议,在
元素上放置ng repeat
似乎很奇怪-我希望它在
元素上
查看其他答案中的注释,您也希望只显示唯一的类别。由于您的JSON意味着类别具有唯一的
id
s,因此您可以为您的应用程序创建如下自定义筛选器:
<div ng-controller="ListCtrl">
<ul ng-repeat="category in categories | customFilter:category">
<li>{{category.title}}</li>
</ul>
</div>
app.filter("uniqueCategoryFilter", function () {
return function (categories) {
var uniqueCategories, catIds;
uniqueCategories = [];
catIds = {};
if (categories) {
angular.forEach(categories, function (category) {
if (!catIds[category.id]) {
catIds[category.id] = true;
uniqueCategories.push(category);
}
});
}
return uniqueCategories;
};
});
<ul ng-repeat="category in categories | filter:{parent: 0}:true | uniqueCategoryFilter">
-------------------------------------------------------- HERE --^
然后像这样使用它:
<div ng-controller="ListCtrl">
<ul ng-repeat="category in categories | customFilter:category">
<li>{{category.title}}</li>
</ul>
</div>
app.filter("uniqueCategoryFilter", function () {
return function (categories) {
var uniqueCategories, catIds;
uniqueCategories = [];
catIds = {};
if (categories) {
angular.forEach(categories, function (category) {
if (!catIds[category.id]) {
catIds[category.id] = true;
uniqueCategories.push(category);
}
});
}
return uniqueCategories;
};
});
<ul ng-repeat="category in categories | filter:{parent: 0}:true | uniqueCategoryFilter">
-------------------------------------------------------- HERE --^
--------------------------------------------------------这里--^
演示:
确保此唯一筛选器位于父属性筛选器之后
参考文献:
- AngularJS API
:过滤器
过滤器
提供程序已经能够按属性过滤列表(如ng repeat
)。在HTML中,如下所示:
<ul ng-repeat="category in categories | filter:{parent: 0}">
------------------------------ HERE --^
演示:
另外,正如一个建议,在
元素上放置ng repeat
似乎很奇怪-我希望它在
元素上
查看其他答案中的注释,您也希望只显示唯一的类别。由于您的JSON意味着类别具有唯一的
id
s,因此您可以为您的应用程序创建如下自定义筛选器:
<div ng-controller="ListCtrl">
<ul ng-repeat="category in categories | customFilter:category">
<li>{{category.title}}</li>
</ul>
</div>
app.filter("uniqueCategoryFilter", function () {
return function (categories) {
var uniqueCategories, catIds;
uniqueCategories = [];
catIds = {};
if (categories) {
angular.forEach(categories, function (category) {
if (!catIds[category.id]) {
catIds[category.id] = true;
uniqueCategories.push(category);
}
});
}
return uniqueCategories;
};
});
<ul ng-repeat="category in categories | filter:{parent: 0}:true | uniqueCategoryFilter">
-------------------------------------------------------- HERE --^
然后像这样使用它:
<div ng-controller="ListCtrl">
<ul ng-repeat="category in categories | customFilter:category">
<li>{{category.title}}</li>
</ul>
</div>
app.filter("uniqueCategoryFilter", function () {
return function (categories) {
var uniqueCategories, catIds;
uniqueCategories = [];
catIds = {};
if (categories) {
angular.forEach(categories, function (category) {
if (!catIds[category.id]) {
catIds[category.id] = true;
uniqueCategories.push(category);
}
});
}
return uniqueCategories;
};
});
<ul ng-repeat="category in categories | filter:{parent: 0}:true | uniqueCategoryFilter">
-------------------------------------------------------- HERE --^
--------------------------------------------------------这里--^
演示:
确保此唯一筛选器位于父属性筛选器之后
参考文献:
- AngularJS API
:过滤器
过滤器
提供程序已经能够按属性过滤列表(如ng repeat
)。在HTML中,如下所示:
<ul ng-repeat="category in categories | filter:{parent: 0}">
------------------------------ HERE --^
演示:
另外,正如一个建议,在
元素上放置ng repeat
似乎很奇怪-我希望它在
元素上
查看其他答案中的注释,您也希望只显示唯一的类别。由于您的JSON意味着类别具有唯一的
id
s,因此您可以为您的应用程序创建如下自定义筛选器:
<div ng-controller="ListCtrl">
<ul ng-repeat="category in categories | customFilter:category">
<li>{{category.title}}</li>
</ul>
</div>
app.filter("uniqueCategoryFilter", function () {
return function (categories) {
var uniqueCategories, catIds;
uniqueCategories = [];
catIds = {};
if (categories) {
angular.forEach(categories, function (category) {
if (!catIds[category.id]) {
catIds[category.id] = true;
uniqueCategories.push(category);
}
});
}
return uniqueCategories;
};
});
<ul ng-repeat="category in categories | filter:{parent: 0}:true | uniqueCategoryFilter">
-------------------------------------------------------- HERE --^
然后像这样使用它:
<div ng-controller="ListCtrl">
<ul ng-repeat="category in categories | customFilter:category">
<li>{{category.title}}</li>
</ul>
</div>
app.filter("uniqueCategoryFilter", function () {
return function (categories) {
var uniqueCategories, catIds;
uniqueCategories = [];
catIds = {};
if (categories) {
angular.forEach(categories, function (category) {
if (!catIds[category.id]) {
catIds[category.id] = true;
uniqueCategories.push(category);
}
});
}
return uniqueCategories;
};
});
<ul ng-repeat="category in categories | filter:{parent: 0}:true | uniqueCategoryFilter">
-------------------------------------------------------- HERE --^
--------------------------------------------------------这里--^
演示:
确保此唯一筛选器在之后出现