2012-07-19 15 views
5

Ich benutze Backbone.js, um 20 Elemente auf einmal auf der Seite zu laden, mehr Elemente zu erhalten, wenn Sie nach unten scrollen, bis keine mehr vom Server abgerufen werden.Lazy laden Artikel mit Filterung

Gleichzeitig möchte ich ein Eingabefeld oben, dass, während Sie einen Namen eingeben, es die Elemente, die übereinstimmen, filtert.

Das Problem besteht darin, dass der Eingabefilter nur dann mit den Elementen übereinstimmt, die sich gerade auf der Seite befinden, wenn Sie noch nicht nach unten geblättert und den vollständigen Satz abgerufen haben.

Was ist die beste technische und visuelle Lösung für die Kombination von UI-Filterung mit Lazy-Loaded-Elementen?

EDIT: Das echte Szenario hier ist das Laden aller Ihrer Facebook-Freunde, die sehr langsam sein können und sie mit anderen Apis mashing. Ich wollte nicht alle auf einmal laden, weil sich die Erfahrung verzögert.

+1

Gibt es technische Einschränkungen, warum Sie nicht alle Elemente laden oder hauptsächlich für die Benutzererfahrung? Die Antwort auf diese Frage zu wissen, kann helfen, eine Antwort auf Ihre Frage zu formulieren ... – alexwen

+0

Hallo Alex, bitte sehe meine Bearbeitung. Vielen Dank. – Abadaba

+0

Lazy loading auf ... wie viele Facebook Freunde hast du blutig? – Louis

Antwort

1

Wenn ein Benutzer sucht, warum die Sammlung nicht mit einem Abruf zurücksetzen, der einen Filter enthält?

Collection.fetch ({Begriff:. $ ("# Search") val()})

Wenn Sie Ihre Backend-API-Endpunkt-Setup für diese Sammlung Umfang Ihre Ergebnisse nach dem Begriff params, dann Sammlung würde nur Ergebnisse vom Server enthalten, die mit der Benutzereingabe übereinstimmen.

Sie können auch den anfänglichen Abruf auf die ersten 3 Zeichen beschränken, die der Benutzer eingibt, und den Rest der Seite des Filterclients ausführen, während sie weiter tippen. Das heißt, wenn Sie die Suchergebnisseite beim ersten Aufruf nicht einschränken.