我一直在尋找嚴峻的日子,如何在AngularJS中輕鬆創建一個包含多個複選框的動態過濾器,並且我找到的解決方案都不滿意。如何用angularJS中的多個複選框創建一個動態過濾器
下面是一個過濾器的示例,當取消選中複選框時將顯示所有內容,並在複選框被選中時過濾數據。 (適合搜索引擎來尋找帶wifi的酒店,陽臺...爲例)
篩選:
app.filter('conveniences_filter', function() { return function(items, types) { var filtered = []; var displayItem; angular.forEach(items, function(item) { displayItem = true; angular.forEach(types, function(type, key) { if(type == true && item[key] == false) { displayItem = false; } }); if(displayItem == true) { filtered.push(item); } }); return filtered; }; });
在你的控制器:
$scope.types = {wifi: false, balcony: false}
在您的HTML中
ng-repeat =「property in property | conveniences_filter:類型」
重要提示:您在$ scope.types密鑰必須與您的鑰匙在你的屬性的項目,或者它不是要去工作在這裏的屬性
例:
對象{名稱:財產,無線網絡:假的,陽臺:真正}
我希望這會是有用的:)
我只是呈現的方式來做到這一點。但是,感謝您的回答我是AngularJS的一名成員,很高興看到其他更好的方式來做到這一點。 不同之處在於,在我使用的解決方案中,篩選器僅在檢查複選框時起作用。例如沒有任何過濾器,你可以看到所有的屬性,即使他們沒有WiFi。當你檢查wifi複選框時,過濾器會隱藏沒有wifi的屬性。有時可能有用 –
嗨,多數民衆贊成酷我認爲它總是很高興看到其他方法。不一定比另一個好。您仍然可以在我的解決方案中實現您的方法,但需要注意的是,在屬性對象中,CHECKED表示鍵:true,UNCKECKED表示該屬性不應存在。 key:false將意味着該屬性應該在該項目中顯式爲false。 – gkunz