AngularJS mysql 过滤多个元素

AngularJS mysql filter multiple element

嗨,这是我的酒店项目。但是我的过滤器有问题。 我想过滤设施栏中的数据。

这是:my fiddle

如果您 select 一个复选框,它会起作用,但如果您 select 多个复选框,它就不起作用。

我怀疑问题出在 indexof 而不是我可以使用的东西。我应该遵循什么方法?

如何更改此行:indexOf(x);

这是我的错误代码:

//PROBLEM FILTER HERE 

$scope.am_en = function()
{
    //get input value
    x = $(".hosting_amenities input:checkbox:checked").map(function(){return $(this).val();}).get();
    //filter
    $scope.ot_Filter = function (location) {
        return location.amenities.indexOf(x) !== -1;
    };
}

问题确实是由函数$scope.am_en引起的,在内部函数$scope.ot_Filter

的声明中

当您 select 多个复选框时,您的 x 变量是一个对象数组,因此您应该执行一个循环并创建一个变量来检查是否应显示该元素。您可以按如下方式进行:

$scope.ot_Filter = function (location) {
    var shouldBeShown = false;
        for (var i = 0; i < x.length; i++) {
            if (location.amenities.indexOf(x[i]) !== -1) {
                shouldBeShown = true;
            break;
        }
    }
    return shouldBeShown;
};

我修改了您的 jsfiddle,以便您可以看到此解决方案正常工作。