Javascript 如何在AngularJS中按对象中的特定属性进行过滤?
我有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",
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
WhatsfilterFilter
?过滤器可以作为服务注入。它的名字是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});
});
}