Укажите paper-dialog-scrollable прокручивать вниз

У меня есть прокручиваемый бумажный диалог, который заполнен повторением dom из запроса firebase. Все работает нормально, за исключением того, что paper-dialog-scrollable не прокручивается вниз, когда firebase добавляет запись в массив. Мне удалось установить обратный вызов всякий раз, когда массив получает новую запись (в основном с наблюдателем на соединенном массиве, а не на массиве). Итак, как мне указать paper-dialog-scrollable прокручивать вниз от этого обратного вызова? Я видел решения здесь, которые, похоже, не работают. Спасибо за любое понимание.


person François Perret    schedule 20.08.2017    source источник


Ответы (1)


Как указано в предоставленной вами ссылке, дайте paper-dialog-scrollable немного id (например, pds), а затем добавьте следующий код:

this.$.pds.$.scrollable.scrollTop = this.$.pds.$.scrollable.scrollHeight;

Значение scrollTop элемента — это измерение расстояния от вершины элемента до самого верхнего видимого содержимого. Если содержимое элемента не создает вертикальную полосу прокрутки, его значение scrollTop равно 0. Подробнее о scrollTop.

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

Я сделал демонстрацию здесь: https://plnkr.co/edit/JIZEdd6NoBBnwndbQuFA?p=preview .

person Ofisora    schedule 20.08.2017
comment
Кроме того, чтобы это работало при динамической подаче данных элемента прокрутки (в моем случае firebase), мне пришлось ждать до следующего рендеринга после запуска обратного вызова мутации массива: Polymer.RenderStatus.afterNextRender(this, () => { this.$.scrolly.$.scrollable.scrollTop = this.$.scrolly.$.scrollable.scrollHeight; }); - person François Perret; 20.08.2017
comment
Чтобы быть тщательным, Polymer.RenderStatus.afterNextRender можно заменить принудительным рендерингом элемента dom-repeat, привязанного к массиву результатов firebase. В любом случае, IMO, paper-dialog-scrollable должен автоматически прокручиваться до последнего или предлагать способ сделать это, вместо того, чтобы заставлять нас получать доступ и устанавливать подсвойства... - person François Perret; 20.08.2017
comment
PaperDialogBehavior делает элемент диалоговым окном Material Design. Итак, если вам нужен материальный дизайн, вы можете его реализовать. - person Ofisora; 21.08.2017