嗨,这是我的酒店项目。但是我遇到过滤器问题。 我想过滤设施栏中的数据。
这是: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;
};
}
答案 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,以便您可以看到此解决方案正常运行。