Javascript 如何在AngularJS中按对象中的特定属性进行过滤?

Javascript 如何在AngularJS中按对象中的特定属性进行过滤?,javascript,angularjs,json,Javascript,Angularjs,Json,我有AngularJS中的对象: genres = [{ label: "Trance", genre: "8", position: 8 }, { label: "House", genre: "2", position: 8 }] 如何通过genre通过ng单击来筛选此数组? 例如ng单击=“filterByGenre(2)” 它应该只返回一个元素: { label: "House", genre: "2",

我有AngularJS中的对象:

 genres = [{
    label: "Trance",
    genre: "8",
    position: 8
}, {
    label: "House",  
    genre: "2",
    position: 8
}]
如何通过
genre
通过
ng单击来筛选此数组?
例如
ng单击=“filterByGenre(2)”

它应该只返回一个元素:

{
    label: "House",  
    genre: "2",
    position: 8
}
像这样试试

var-app=angular.module('app',[]);
app.controller('myController',函数($scope){
$scope.genres=[
{
标签:“恍惚”,
体裁:“8”,
职位:8
},
{
标签:“房子”,
体裁:“2”,
职位:8
}
];
$scope.setGenreFilter=函数(类型){
$scope.genreFilter=流派;
}
})

过滤项
{{genre.genre},
****************体裁**********************
{{item.label}
您可以使用函数

genres.filter(函数(项){
return item.genre==“2”;
});以下是一个简单的工作,说明您的目标。它会按属性
类型
过滤对象,您可以在文本字段中搜索
Id
。例如
8

查看过滤器声明
filter:{genre:searchGenre}
,其中包含要过滤的属性名
genre
,以及模型输入
searchGenre
。有关更多信息,请查看


以下示例显示如何在视图中进行筛选- 看法
以下示例显示如何在控制器中进行筛选- 看法
只需用变量替换“2”。举个例子,我加了“2”。这个答案是怎么指角度范围的?我猜不需要。如果你读了这个问题,它会说-如何通过点击过滤这个数组?例如,ng click=“filterByGenre(2)”。我给出的是函数体
filterByGenre
Whats
filterFilter
?过滤器可以作为服务注入。它的名字是
Filter
,但在你的例子中,我不认为Filter是服务,它是AngularJS的核心服务。以下是核心筛选器的列表:。我的例子是使用
filter
。当我将它注入控制器时,它不起作用
<div ng-controller="MyCtrl">
    <h1>Filter items</h1>
    <input type="text" ng-model="searchGenre">
    <h2>Genres</h2>
    <div ng-repeat="genre in genres | filter:{genre:searchGenre}">
      {{genre.label}}
    </div>
</div>
var myApp = angular.module('myApp',[]);

function MyCtrl($scope) {
   $scope.genres = [{
      label: "Trance",
      genre: "8",
      position: 8
  }, {
      label: "House",  
      genre: "2",
      position: 8
  }];
}
<div ng-controller="MyCtrl">
    <div>Filter items</div>
    <input type="text" ng-model="searchGenre">
    <div>Genres</div>
    <div ng-repeat="genre in filtered">
      {{genre.label}}
    </div>
</div>
var myApp = angular.module('myApp',[]);

function MyCtrl($scope, filterFilter) {

   $scope.genres = [{
      label: "Trance",
      genre: "8",
      position: 8
  }, {
      label: "House",  
      genre: "2",
      position: 8
  }];

  //init search phrase
  $scope.searchGenre = '';

  //init filtered scope
  $scope.filtered = [];

  /**
   * Watch keyword change
   */
  $scope.$watch('searchGenre', function(term) {
    $scope.filtered = filterFilter($scope.genres, {'genre': term});
  });
}