Я хочу реализовать фильтры на основе флажка. У меня есть рестораны с несколькими специальностями, которые я сохранил в массиве. Также один или несколько ресторанов могут иметь одну и ту же специальность.Угловые фильтры флагов Js
Я сохранил фирменные блюда в разных объектах. Вместе с идентификатором и именем.
Теперь, когда я выбираю специальность, я хочу проверить, присутствует ли эта специальность в специальном массиве ресторана. если да, то верните этот ресторан.
Это то, что мне удалось сделать до сих пор.
Html
<div ng-app="myApp" ng-controller="myCtrl">
<input type="text" ng-model="search_cat.name">
<br>
<b>Category:</b>
<div ng-repeat="cat in cuisines">
<b><input type="checkbox" ng-model="filterxyz[cat.id]" /> {{cat.name}}</b>
</div>
<hr />
<div ng-repeat="w in filtered=(restaurants | filter:filterByCategory) ">
{{w.name}}
</div>
<hr />
Number of results: {{filtered.length}}
</div>
JS
var app = angular.module('myApp', []);
app.controller('myCtrl', function ($scope) {
$scope.restaurants = [
{ name: "Restaurant A", specialities:['1','2','3'] },
{ name: "Restaurant B", specialities:['1','2'] },
{ name: "Restaurant C", specialities:['1','2','3','4']},
{ name: "Restaurant D", specialities:['1','2','3','4','5']},
{ name: "Restaurant E", specialities:['1']},
{ name: "Restaurant F", specialities:['3'] },
{ name: "Restaurant G", specialities:['1','4']},
{ name: "Restaurant H", specialities:['1','2','3','4'] }
];
$scope.cuisines=[
{ name: "Speciality A1", id: "1"},
{ name: "Speciality A2", id: "2"},
{ name: "Speciality A3", id: "3"},
{ name: "Speciality A4", id: "4"},
{ name: "Speciality A5", id: "5"}
];
$scope.filterxyz = {};
$scope.filterByCategory = function (restaurant) {
return $scope.filterxyz[restaurant.specialities] || noFilter($scope.filterxyz);
};
function noFilter(filterObj) {
for (var key in filterObj) {
if (filterObj[key]) {
return false;
}
}
return true;
}
});
Можете ли вы уточнить проблему, которую вы испытываете? –
например, когда я выбираю специальность A1, он должен приносить мне все рестораны, за исключением ресторана F., потому что специализация A1 отсутствует в ресторане F – Gautam