AngularJs-仅通过自定义筛选器中的某些字段筛选对象

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)

我正在做这个。数据来自一个对象数组,我只需要通过nameamount进行筛选

我有这个代码,但是如果在搜索框中键入一个字符,它只按数量搜索,而不按名称搜索。换句话说,如果您键入“warren”或“37.47”,它必须返回相同的结果,但不起作用

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;
    };
});
您可以在该筛选器中写入逻辑,现在使用该筛选器筛选列表

更新

您只需将此筛选器实现到自定义筛选器
分页

这是您的代码的新版本

代码更新列表

  • 向ng repeat属性添加了新的过滤器参数

    ng repeat=“filteredlist中的费用|分页:分页.currentPage:numPerPage:filter.condition”

    ...

  • 好的,最后(基于of和阅读),我以这种方式解决了我的问题:

    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很抱歉回复太晚。请看一下我的答案。我没有完成我的回答。对不起,我有急事。