2017-03-17 62 views
0

嗨,這是我的酒店項目。但是我有一個過濾器的問題。 我想篩選amenities列中的數據。AngularJS mysql多元素過濾器

這就是: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

的問題確實是由函數$scope.am_en引起的,在內部函數的聲明$scope.ot_Filter

當你選擇多個複選框時,你的x變量是一個對象數組,所以你應該做一個循環並且可以創建一個變量來檢查該元素是否應該顯示o不是。可以按如下方式做到這一點:

$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,這樣您就可以看到這個解決方案正常工作。

+0

這太好了。我一直試圖解決它幾天。非常感謝你。 – toplumdusmani

+0

如果房間裏沒有電視,我怎麼能隱藏所有的房間。我們可以過濾嗎?例如:如果wifi和電視被檢查。如果電視機沒有任何空間,結果爲空 – toplumdusmani

+0

我建議您將新的疑問作爲單獨的問題發佈,以便整個社區知道您還有什麼需要解決的問題。 – Icarus