2014-01-16 2 views
0

Я ищу немного советов о том, что это лучший способ пойти об этом:AngularJS - Фильтрация по нескольким группам CheckBox

У меня есть около 5 групп флажков. Список будет похож на бренды, модель, цвет, размер и так далее. Когда пользователь гасит бренды, цвета и т. Д., Список автомобилей обновляется в зависимости от их выбора.

Список генерируется при вызове базы данных, я знаю, что это было бы довольно просто, если бы список был сгенерирован один раз как список, который можно полностью фильтровать во внешнем интерфейсе, но ожидается, что БД вырастет до более чем 10 000 строк так что это было бы не идеально.

Мое мышление вначале состояло в том, чтобы публиковать в БД каждый раз, когда галочка отмечена галочкой и возвращает результат в представление. Это отлично подходит для одного набора флажков, но я не могу понять, как это сделать с несколькими группами флажков.

Вот функция в мой контроллер, который обрабатывает, что:

$scope.getSelectedBrands = function() { 
    $scope.brandsselected = $filter('filter')($scope.brands, {checked: true}); 
    var senddata = $filter('filter')($scope.brands, {checked: true}); 
    $http.post('/brands', senddata).success(function(data, status, response) { 
     $scope.cars = data; 
    });   
} 

Я не знаю, если используете другую, но очень похожую функцию для каждой группы CheckBox бы слишком много смысла, и, кажется, не очень DRY , В настоящий момент каждая группа флажков, например, бренд, будет иметь собственный URL-адрес для отправки, чтобы вернуть набор результатов. Кроме того, поскольку флажок в любой из групп флажков может быть отмечен первым, исходные данные будут возвращаться из другой функции в зависимости от того, какой флажок установлен.

Есть ли лучший способ приблизиться к этому? Я также должен разрешить пользователям снижать флажок и снова заполнять список.

Надеюсь, это имеет смысл.

Благодаря

+0

Возможно, мои ответы на [это] (http://stackoverflow.com/questions/18764853) относятся к вашему вопросу - проверьте второй, когда вещи станут более многоразовыми. –

+0

Спасибо за это, я посмотрю. Я также думаю, что могу просто получить значения из всей формы и вместо этого использовать этот объект, а не документацию здесь: http://docs.angularjs.org/guide/forms – BarryWalsh

ответ

0

OK Я думаю, что я приближалась это неправильный путь. Все, что мне нужно было сделать, - создать такую ​​функцию, как показано ниже, и запустить ее, когда будет установлен флажок. Он просто получает данные формы.

$scope.getFormdata = function(){ 
    var formdata = [{ 
      brands : $filter('filter')($scope.brands, {checked: true}), 
      types : $filter('filter')($scope.types, {checked: true}) 
    }]; 
    console.log(formdata); 
} 

Очень простой.

Смежные вопросы