Filter by multiple columns with ng-repeat

前端 未结 8 1473
小鲜肉
小鲜肉 2020-11-30 12:16

I\'m wondering if there\'s an easy way in Angular to filter a table using ng-repeat on specific columns using or logic, rather than and

8条回答
  •  有刺的猬
    2020-11-30 12:52

    I created this filter to perform search in several fields:

    var find = function () {
        return function (items,array) {
            var model  = array.model;
            var fields = array.fields;
            var clearOnEmpty = array.clearOnEmpty || false;
            var filtered = [];
    
            var inFields = function(row,query) {
                var finded = false;
                for ( var i in fields ) {
                    var field = row[fields[i]];
                    if ( field != undefined ) {
                        finded = angular.lowercase(row[fields[i]]).indexOf(query || '') !== -1;
                    }
                    if ( finded ) break;
                }
                return finded;
            };
    
            if ( clearOnEmpty && model == "" ) return filtered;
    
            for (var i in items) {
                var row = items[i];                
                var query = angular.lowercase(model);
    
                if (query.indexOf(" ") > 0) {
                    var query_array = query.split(" ");
                    var x;
                    for (x in query_array) {
                        query = query_array[x];
                        var search_result = true;
                        if ( !inFields(row,query) ) {
                            search_result = false;
                            break;
                        }
                    }
                } else {
                    search_result = inFields(row,query);
                }                
                if ( search_result ) {
                    filtered.push(row);
                }
            }
            return filtered;
        };
    };   
    

    How to use:

    
    

提交回复
热议问题