2012-07-19 9 views
5

Używam Backbone.js do załadowania 20 elementów naraz na stronie, aby uzyskać więcej pozycji, gdy przewijasz w dół do samego końca, dopóki nie pozostanie żaden element do pobrania z serwera.Leniwe elementy ładujące z filtrowaniem

W tym samym czasie chcę, aby pole wejściowe było na górze, które podczas wpisywania nazwy filtruje dopasowane elementy.

Problem polega na tym, że jeśli nie przewinąłeś jeszcze do końca i pobrano cały zestaw, filtr wejściowy dopasuje tylko te elementy, które aktualnie znajdują się na stronie.

Jakie jest najlepsze rozwiązanie technicznie i wizualnie do łączenia filtrowania UI z leniwymi załadowanymi elementami?

EDYCJA: Prawdziwym scenariuszem jest ładowanie wszystkich znajomych z Facebooka, które mogą być bardzo powolne i łączone z innymi apisami. Nie chciałem załadować wszystkich naraz, ponieważ doświadczenie jest opóźnione.

+1

Czy istnieją techniczne ograniczenia dotyczące tego, dlaczego nie wszystkie elementy zostały załadowane na początek lub czy jest to głównie dla wygody użytkownika? Znajomość odpowiedzi na to pytanie może pomóc sformułować odpowiedź na twoje pytanie ... – alexwen

+0

Cześć alex, zobacz moją edycję. dzięki. – Abadaba

+0

Leniwe ładowanie ... ilu znajomych z Facebooka masz w domu? – Louis

Odpowiedz

1

Gdy użytkownik szuka, może zresetować kolekcję za pomocą pobierania zawierającego filtr?

Collection.fetch ({wyrażenia:. $ ("# Search") val()})

Jeśli konfiguracja Twojego backend punkt końcowy API dla tej kolekcji do zakresu wyniki według params określony, wówczas kolekcja zawiera tylko wyniki z serwera, które pasują do danych wprowadzonych przez użytkownika.

Można również ograniczyć początkowe pobieranie do pierwszych 3 znaków wprowadzonych przez użytkownika, a następnie wykonać pozostałe operacje po stronie klienta filtrującego w trakcie pisania. To znaczy, jeśli nie ograniczasz strony serwera wyników wyszukiwania przy pierwszym połączeniu.