按数组值进行角度自定义筛选
Angular custom filter by array value
我正试图在Angular.js应用程序中创建一个自定义过滤器。但我真的是js的新手,需要一些帮助。这是我的jsfiddle示例http://jsfiddle.net/gSXa7/16/
我所需要的只是能够根据"流派"数组中的每个值过滤对象。现在的问题是,只有当"类型"值为单一时,才能对其进行排序,但我需要能够使用每个值对数据进行排序。
<div ng-app="people">
<div ng-controller="PeopleController">
<input ng-model="query" type="text" id="searchbox" placeholder="Search..."><br/>
<input type="checkbox" ng-click="includeYear('2003')"/> 2003
<input type="checkbox" ng-click="includeYear('2004')"/> 2004
<input type="checkbox" ng-click="includeYear('2005')"/> 2005
<hr/>
<input type="checkbox" ng-click="includeGenre('Cinema')"/> Cinema
<input type="checkbox" ng-click="includeGenre('Music')"/> Music
<input type="checkbox" ng-click="includeGenre('Sport')"/> Sport
<hr/>
<ul>
<li ng-repeat="f in gems | filter:yearFilter | filter:genreFilter | filter:query">
{{f.name}}.......<i>Interest: {{f.genre}}</i>
</li>
</ul>
</div>
</div>
Javascript:
'use strict'
angular.module('people', []);
app.controller('PeopleController', function(){
this.products = gems;
});
function PeopleController($scope) {
$scope.gems = [
{ name: 'Jason',
year: '2003',
genre: "Sport, Music, Cinema",
},
{ name: 'Fred',
year: '2003',
genre: "Sport, Music, Cinema",
},
{ name: 'Mike',
year: '2004',
genre: "Music, Cinema",
},
{ name: 'Andrew',
year: '2005',
genre: "Cinema",
},
{ name: 'Julie',
year: '2005',
genre: "Music",
}
];
$scope.yearIncludes = [];
$scope.includeYear = function(year) {
var i = $.inArray(year, $scope.yearIncludes);
if (i > -1) {
$scope.yearIncludes.splice(i, 1);
} else {
$scope.yearIncludes.push(year);
}
}
$scope.yearFilter = function(gemStore) {
if ($scope.yearIncludes.length > 0) {
if ($.inArray(gemStore.year, $scope.yearIncludes) < 0)
return;
}
return gemStore;
}
$scope.genreIncludes = [];
$scope.includeGenre = function(genre) {
var i = $.inArray(genre, $scope.genreIncludes);
if (i > -1) {
$scope.genreIncludes.splice(i, 1);
} else {
$scope.genreIncludes.push(genre);
}
}
$scope.genreFilter = function(gemStore) {
if ($scope.genreIncludes.length > 0) {
if ($.inArray(gemStore.genre, $scope.genreIncludes) < 0)
return;
}
return gemStore;
}
}
尝试此筛选器以通过任何选定值进行筛选
$scope.genreFilter = function(gemStore) {
if ($scope.genreIncludes.length > 0) {
var tmp = gemStore.genre.split(',').map(function(v) { return $.trim(v); });
for(var x = 0; x < tmp.length; x++)
{
if ($.inArray(tmp[x], $scope.genreIncludes) >= 0)
return gemStore;
}
return;
}
return gemStore;
}
相关文章:
- 数据表自定义筛选
- 类别自动完成jQuery中的单词级自定义筛选器,而不是子字符串
- 想要将ng个repeat对象传递给自定义筛选函数
- 自定义筛选器不'我不使用django数据表视图创建的ajax.data.Json
- 在模型可用之前调用使用 app.filter 的自定义筛选器
- 使用select2 3.5.2中的initSelection进行自定义筛选
- "键未定义”;在AngularJS'的自定义筛选功能
- 如何通过在 Fabric JS 中传递颜色代码来创建自定义筛选器
- Angular.js 中字符串特定部分的自定义筛选器表达式
- 自定义筛选器排序方式
- AngularJs:错误:用于配对项目的自定义筛选器引发错误:“达到 10 次 $digest() 迭代.流产!
- 将带有属性的自定义筛选器传递到角度中的自定义指令
- 如何在自定义筛选器中添加多个参数
- 将重复项传递给自定义筛选器
- 将URL的一部分传递给AngularJS中的自定义筛选器
- Typescript+angularjs自定义筛选器未知提供程序:
- 按数组值进行角度自定义筛选
- 用于搜索JSON数据的自定义筛选器
- 为Kendo网格中的特定列自定义筛选消息
- $timeout或$apply在自定义筛选器中使用时导致无限循环