Событие OnScroll не работает - Angular Dart - PullRequest
0 голосов
/ 17 сентября 2018

У меня проблема с событием window.onScroll.Событие не было инициировано.

Это моя первая попытка:

  @override
  void ngOnInit() {

    window.onScroll.listen((Event event) => print("it works.."));
  }

Но это не работает.

Мне в основном нужно событие onScroll.Не больше.Поэтому я попробовал «старый школьный» способ в HTML

Моя вторая попытка:

    <div (scroll)="onScroll()">

       <!--Some content-->

    </div>

Но это также не работает.

Какое лучшее решение, чтобы получитьсобытие прокрутки в AngularDart?

Кстати, я использую AngularDart 5.

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Существует несколько решений этой проблемы.

Первое, что вам нужно сделать, это получить ссылку на элемент HTML, из которого вы хотите получать события прокрутки. Я делаю вид, что этот элемент выглядит следующим образом (в вашем файле .html компонентов):

<div>Some scrollable content</div>

Насколько я знаю, есть два способа получить ссылку на элемент HTML в AngularDart.

Первое решение:

Используйте аннотацию @ViewChild. Чтобы это работало, вам нужно добавить ссылочную переменную шаблона к div. Я называю это «прокручиваемым», однако вам решать, как вы это назовете.

<div #scrollable>Some scrollable content</div>

Затем добавьте следующее свойство в ваш класс компонентов:

@ViewChild("scrollable")
  Element scrollable;

Второе (но не рекомендуемое) решение:

Добавьте идентификатор к div (имя идентификатора не имеет значения): Получите ссылку на div с помощью document.getElementById(), предоставленной dart:html:

Element scrollable = document.getElementById('scrollable')

Проблема этого решения в том, что, насколько мне известно, document недоступно ни в одном из хуков жизненного цикла AngularDart.

Наконец , чтобы прослушать поток onScroll элемента scrollable, просто сделайте следующее где-нибудь в вашем классе компонентов:

something.onScroll.listen((Event event) => print("Hurray, it works :)"))
0 голосов
/ 17 сентября 2018
div.onScroll.listen((ev) {
});

это в значительной степени работает на моих тестах.
Вы уверены, что место, куда вы добавляете слушателя, - это то, что фактически прокручивает?

...