Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 添加分页后AngularJS中的自定义筛选器_Javascript_Filter_Angularjs_Pagination_Angularjs Ng Repeat - Fatal编程技术网

Javascript 添加分页后AngularJS中的自定义筛选器

Javascript 添加分页后AngularJS中的自定义筛选器,javascript,filter,angularjs,pagination,angularjs-ng-repeat,Javascript,Filter,Angularjs,Pagination,Angularjs Ng Repeat,对my ng repeat清单()执行分页后 我需要此筛选器按多种语言搜索(选择两种或更多语言)。 如果我将过滤=(列表|过滤器:搜索)中的数据替换为列表中的数据,您将看到它正在工作。但是我需要过滤进行分页 jsFiddle:(基于)我建议,不要在ng repeat指令中使用表达式,而是将ng repeat设置为列表的constroller上返回您要查找的子集或值的方法。例如: // In your controller $scope.filteredList = func

对my ng repeat清单()执行分页后

  • 我需要此筛选器按多种语言搜索(选择两种或更多语言)。 如果我将过滤=(列表|过滤器:搜索)中的数据替换为列表中的数据,您将看到它正在工作。但是我需要过滤进行分页


    jsFiddle:(基于)

    我建议,不要在ng repeat指令中使用表达式,而是将ng repeat设置为列表的constroller上返回您要查找的子集或值的方法。例如:

    // In your controller
    
            $scope.filteredList = function() {
               return $filter('filter')($scope.list,{'language':search.language});
            }
    
    // And in your ng-repeat 
    
            ng-repeat="(key,val) in filteredList()"
    

    希望这有帮助

    我想我误解了你原来的问题

    我重写了你的自定义过滤器。它不完全是面向对象的,但稍加修改,它的可扩展性会更好。基本上你只需要一些比基本的角度过滤器更具包容性的东西

    app.filter("customFilter", function() {
        return function(input, search) {
            if(search && search != undefined) {
                var _toRet = new Array();
                for(var i in search) {
                    for(var k in input) {
                        if(search.indexOf(input[k].language) != -1 && _toRet.indexOf(input[k]) == -1) {
                            _toRet.push(input[k]);
                        }
                    }
                }
                return _toRet;
            } else {
                return input;
            }
        };
    });
    
    另外,请注意对ngRepeat语法的更改

    ng-repeat="data in filtered = list | filter:search.name | customFilter:search.language | startFrom:(currentPage-1)*entryLimit | limitTo:entryLimit"
    

    嗯,好吧。。。你能用叉子叉我的小提琴吗?我试过你的代码,但不知道如何使用。看起来很有希望。下面是一个更新的fiddle,其中包含了有效的js引用(原始引用产生了一个错误)。
    app.filter("customFilter", function() {
        return function(input, search) {
            if(search && search != undefined) {
                var _toRet = new Array();
                for(var i in search) {
                    for(var k in input) {
                        if(search.indexOf(input[k].language) != -1 && _toRet.indexOf(input[k]) == -1) {
                            _toRet.push(input[k]);
                        }
                    }
                }
                return _toRet;
            } else {
                return input;
            }
        };
    });
    
    ng-repeat="data in filtered = list | filter:search.name | customFilter:search.language | startFrom:(currentPage-1)*entryLimit | limitTo:entryLimit"