2015-08-14 2 views
0

Моя ситуация прямо сейчас заключается в том, что у меня есть модель, которая загружает информацию о 50 машинах. У меня есть боковая панель с некоторыми фильтрами, например, год, модель, пробег и т. Д. Когда я их фильтрую, все работает отлично, но, поскольку модель становится довольно большой, клиент попросил разбиение на страницы. Поэтому вместо того, чтобы загружать все автомобили на одной модели, я загружал бы только 10, и после того, как я нажму кнопку «показать больше», он загрузит больше 10 и добавит к модели и отобразит ее.Отфильтруйте модель при разбивке на страницы

Проблема в том, что если я загружаю только первые 10 и фильтры, клиент хочет их фильтровать всеми. Поэтому я считаю, что нет никакого способа.

Единственный способ, который я вижу, - загрузить все модели в модели и как-то показать только 10 за раз, и когда я начну фильтровать, это сломает этот предел и отфильтрует все. Это выполнимо? Любые другие идеи, как подойти к этой проблеме?

+1

Я склонен голосовать «слишком широким», потому что есть очень много способов решить эту проблему. Например, вы также можете переместить всю свою фильтрацию и сортировку на сервер. Добавление некоторого примерного кода с объяснением того, что он делает и что он должен делать, было бы хорошим началом для того, чтобы привлечь к ответственности. – wvdz

ответ

0

Вы не найдете решение проблемы с AngularJS.

Если клиент запросил разбиение на страницы, это, скорее всего, связано с эксплуатационными соображениями. Избежать проблемы и реализовать разбиение на страницы, кроме фильтрации, не решит проблемы с производительностью, не говоря уже о том, что клиент почувствует себя несколько обманутым (я бы).

Фильтрация должна выполняться на стороне сервера, которая доставляет уже отфильтрованные результаты клиенту.

0

Вы можете фильтровать на сервере. Но на обратном формате JSON, вы должны сделать небольшое изменение:

вы отправляете:

{ page: 0, itemsByPage: 10, year: 2012, ... } 

и JSON возвращение, сообщают общее количество записей, и разбитые на страницах записей

{ totalRecords: 239, pageItems: [ { id: 28, name: 'ford mustang'} ... ] } 

а затем, пообещав тогда, вы показываете «pageItens» и показываете кнопки страниц на основе totalRecords

Если вы используете mysql, вы можете использовать found_rows(), чтобы получить totalRecords в разбитом на страницы:

https://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_found-rows

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