AngularJS mysql过滤多个元素

时间:2017-03-17 14:01:23

标签: angularjs angularjs-filter

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

这是:my fiddle

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

我怀疑问题是由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;
    };
}

1 个答案:

答案 0 :(得分:1)

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

的声明中

当您选择多个复选框时,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,以便您可以看到此解决方案正常运行。