带有多个表达式和条件的$ filter('filter')

时间:2015-09-14 04:52:42

标签: arrays angularjs filtering

好的......我正在为客户开发一个房地产页面,我需要一个过滤器,根据用户选择的内容进行过滤,例如:租金/购买/公寓/房子

目前这是我的功能

    $scope.$watch('propfilters', function () {

    if( typeof $scope.propfilters != "undefined" ) 
    {
        var filterstr = buildfilter($scope.propfilters);
        $scope.filteredtodos = $filter('filter')($scope.master, {Filters : filterstr});
        $scope.totallistings = $scope.filteredtodos.length;
    }
},true);

这是buildfilter

function buildfilter(str)
{
    var filt = [];
    var cty = '';
    var filter='';
    var i = 0;

    if (str.City !== false && typeof str.City != "undefined"){cty = '{city : "'+str.City+'"} && ';}
    if (str.Buy === true && typeof str.Buy != "undefined"){filt.push(" {Buy : true} ");i++;}
    if (str.Rent === true && typeof str.Rent != "undefined"){filt.push(" {Rent : true} ");i++;}
    if (str.OfferHouse === true && typeof str.OfferHouse != "undefined"){filt.push(" {OfferHouse : true} ");i++;}
    if (str.OfferApartment === true && typeof str.OfferApartment != "undefined"){filt.push(" {OfferApartment : true} ");i++;}
    var tmp = '';
    tmp = filt.join(" || ");
    filter = cty.concat(tmp);

    return filter;
}

这是我的问题,当只选择1个过滤器时效果很好但是当选择了多个时,它会破坏$filter('filter')功能

但是在这方面有一些条件需要满足......如果设置城市,所有比赛都必须在城市,无论租金购买..(等)和任何其他选项都可以是真的,如果是的话显示..我有一个过滤器805工作,但它超过105行代码...任何想法?

0 个答案:

没有答案