AngularJs-仅通过自定义筛选器中的某些字段筛选对象
我正在做这个。数据来自一个对象数组,我只需要通过name和amount进行筛选 我有这个代码,但是如果在搜索框中键入一个字符,它只按数量搜索,而不按名称搜索。换句话说,如果您键入“warren”或“37.47”,它必须返回相同的结果,但不起作用AngularJs-仅通过自定义筛选器中的某些字段筛选对象,angularjs,angularjs-ng-repeat,filtering,angular-ui,angularjs-filter,Angularjs,Angularjs Ng Repeat,Filtering,Angular Ui,Angularjs Filter,我正在做这个。数据来自一个对象数组,我只需要通过name和amount进行筛选 我有这个代码,但是如果在搜索框中键入一个字符,它只按数量搜索,而不按名称搜索。换句话说,如果您键入“warren”或“37.47”,它必须返回相同的结果,但不起作用 var filterFilter = $filter('filter'); $scope.filter = { condition: "" }; $scope.$watch('filter.condition',function(condition)
var filterFilter = $filter('filter');
$scope.filter = {
condition: ""
};
$scope.$watch('filter.condition',function(condition){
$scope.filteredlist = filterFilter($scope.expenses,{name:condition} && {amount:condition});
$scope.setPage();
});
您想为应用程序创建自定义筛选器
directiveApp.filter("myFilter", function () {
return function (input, searchText) {
var filteredList = [];
angular.forEach(input, function (val) {
// Match exact name
if (val.name == searchText) {
filteredList.push(val);
}
// Match exact amount
else if (val.amount == searchText) {
filteredList.push(val);
}
});
input = filteredList;
return input;
};
});
您可以在该筛选器中写入逻辑,现在使用该筛选器筛选列表
更新
您只需将此筛选器实现到自定义筛选器分页
这是您的代码的新版本
代码更新列表
var filterFilter = $filter('filter');
$scope.filter = {
condition: ""
};
$scope.$watch('filter.condition',function(condition){
$scope.filteredlist = filterFilter($scope.expenses,function(value, index, array){
if (value.name.toLowerCase().indexOf(condition.toLowerCase()) >= 0 ) {
return array;
}
else if (value.amount.indexOf(condition) >= 0 ) {
return array;
}
});
$scope.setPage();
});
决赛!(有些遗憾)谢谢你的回答,但我更新了我的问题,并作了更具体的解释。@rob007很抱歉回复太晚。请看一下我的答案。我没有完成我的回答。对不起,我有急事。