Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于IS AngularJS的过滤结果_Javascript_Json_Angularjs_Filter - Fatal编程技术网

Javascript 基于IS AngularJS的过滤结果

Javascript 基于IS AngularJS的过滤结果,javascript,json,angularjs,filter,Javascript,Json,Angularjs,Filter,我有来自JSON文件的数据。我正在显示类别列表,但我希望筛选该列表并仅显示具有“父:0”的类别 "categories": [ { "id": 51, "slug": "knarr", "title": "Knarr", "description": "", "parent": 8,

我有来自JSON文件的数据。我正在显示类别列表,但我希望筛选该列表并仅显示具有“父:0”的类别

"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
      过滤器

    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
      过滤器

    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 --^
    
      --------------------------------------------------------这里--^
    演示:

    确保此唯一筛选器在之后出现