2016-02-22 8 views
4

У нас более 500 строк из списка по каждому запросу, иногда это 10, а иногда и огромные.Комплексный итератор RxJS только видимые строки

Я хочу взять этот массив и показать только то, что видно на экране, и скрыть все остальное, но пользователь прокрутит вниз, он отобразит другие строки и скроет предыдущие.

Это немного сложно, я смотрел видео RxJS, и Netflix сделал схожие. Я не уверен, какие функции использовать для этого эффекта.

https://gist.github.com/iBasit/8ceef1db9de945a37559 Netflix пример.

Наш код:

Observable.fromArray([0,1,2,.....500]).subscribe(row => show(row)); 
+0

Вам нужно что-то вроде https://github.com/stackfull/angular-virtual-scroll. Я еще ничего не видел для Angular2 (не значит, что я использую его примерно через 1,5 месяца). –

ответ

1

Я написал пару статей (как this one) и различные демо-версии о том, как это сделать «виртуальную прокрутку вещь», но в основном то, что вам нужно либо статические высоты строк или возможность определить, будет ли данная строка видна на экране (Row#isRowVisible в том смысле, в котором вы связаны).

Тогда самый простой способ отображения строк после этого состоит в том, чтобы полностью позиционировать их так, чтобы вы либо умножали индекс на свою статическую высоту строки, либо вычисляли, где строка должна отображаться как-то.

This - довольно грубая демонстрация того, как это сделать в реактиве, но идеи очень похожи (вы можете просто скопировать вставку кода RxJS из этого или моего примера Cycle.js). Я бы рекомендовал вам попробовать сделать это самостоятельно.

Кроме того, 500 предметов действительно не должны быть проблемой для angular2 (это очень быстро), если у вас нет тонны элементов в каждой строке.

+0

, а 250 штук заняли очень быстро, чтобы извлечь из api (меньше секунды), но затем он начал синтаксический анализ, который занял более 5 или более секунд, если только я не уменьшу до 'take (20)', который затем отображается в течение секунды или двух. – Basit

+0

Что делать, если я не знаю высоту строки или если высота строки различна каждый раз? например, в некоторых местах высота строки будет 100px и иногда 500px .. или иногда только одна строка 20px. как я могу рассчитать эти строки? – Basit

+0

Если у вас нет статических измерений для ваших строк, нет методов, которые могут вам помочь. – kakigoori

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

  • Нет связанных вопросов^_^