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