@mortyy

Как правильно реализовать бесконечный скролл на angular?

Сейчас имеется такой код:
$elem.scroll(function () {
        if ($ctrl._loading) return;
        if ($elem.scrollTop() - 50< 0) {
          $ctrl.onScrolled.call($ctrl.context)
        }
      })

в результате при подгрузке данных я остаюсь в самом верху, а нужно чтобы скролл оказался на том месте, где началась загрузка данных. (чат vk и т.д)

Думаю, что нужно запоминать положение и скролить после того как новые данные отобразятся
var sh = raw.scrollHeight
....
 raw.scrollTop = raw.scrollHeight - sh;


Пытался через
ng-init=($last?finished():null)
но так не работает.

Добавление данных:
this.getMessages(req)
        .then(({items}) => {
          this.messages.unshift(...items.reverse());
          this.isGettingScrolledMessages = false;
          this.$rootScope.silent = true;
        });


Как узнать, что все данные отображены и можно возвращаться в предыдущее место или может имеются варианты получше ?
  • Вопрос задан
  • 532 просмотра
Решения вопроса 1
zo0m
@zo0m
full stack developer
попробуйте $timeout
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы