高级角度滤镜(范围小于,大于)

时间:2015-06-12 01:51:14

标签: javascript angularjs node.js ngtable angular-filters

所以我正在尝试使用angular和ng-table创建一个过滤器,以便我可以搜索范围(例如:5-10个偏移),<,>,> =,< =,!=。这样做的最佳方法是什么?我可能过于复杂了,因为我正在使用服务来缓存,排序,过滤数据,因此我没有$ scope访问权限(至少根据我的理解,我可以将承诺返回到控制器的范围)。 / p>

在我的服务中:

function transformData(data, params) {
            var orderedData = params.sorting() ?
                $filter('orderBy')(data, params.orderBy()) :
                data;

            for (var propt in params.filter()) {
                if (params.filter().hasOwnProperty(propt) && params.filter()[propt] === '') {
                    delete params.filter()[propt];
                }
            }

            return params.filter() ?
                $filter('filter')(orderedData, customFilter(params.filter()), function (actual, expected) {
                    if (!isNaN(expected)) {
                        return (actual == expected)
                    }
                    $log.info('actual: ', actual, ' expected: ', expected);
                    return angular.lowercase(actual.toString()).indexOf(angular.lowercase(expected.toString())) > -1;

                }) : orderedData;
        }

我遇到的问题是:

function customFilter(filter) {
            $log.debug('DS Filter:', filter);

            if (filter['vacantLessThan']) { // This will be a dropdown, or something..
                // Something..
            } else if (filter['vacantLessThanEq']) {
                // Something..
            } else if (filter['vacantGreaterThan']) {
                // Something..
            } else if (filter['vacantGreaterThanEq']) {
                // Something..
            }

            var keys = Object.keys(filter);

            return function (item) {
                var isEqual = true;
                angular.forEach(keys, function (key) {
                    $log.debug(filter[key], ' vs ', item[key]);
                    if(!isNaN(filter[key])){
                        isEqual = !(item[key] == filter[key]) ? false : isEqual;
                    } else {
                        isEqual = !(angular.lowercase(item[key].toString()).indexOf(angular.lowercase(filter[key].toString())) > -1) ? false : isEqual;
                    }
                });

                return isEqual;
            }
        }

我应该废弃这个并使用ng-hide吗?

0 个答案:

没有答案