2016-05-18 3 views
1

Я пишу свою собственную директиву, которая управляет дочерним div (виджет точно) на большом экране. В представлении для директивы содержится полоса прокрутки, отдельно от полосы прокрутки на большей веб-странице.программно прокручивать * внутри * дочерний div в угловом

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

У меня возникли проблемы с этим. $ anchorScroll не работает, он прокручивает весь экран вниз, а не только содержимое дочернего div моей директивы, и на самом деле не просматривает вообще, если значение, которое я хочу прокрутить, пока не отображается на ребенок div.

Я видел множество примеров директивы, которая может быть добавлена ​​в HTML-элемент для обработки прокрутки, но они работают без щелчка без дополнительного программного управления, которого я хочу, и решаю, когда на самом деле прокручиваться из метода контроллера. К сожалению, я не знаю, как обобщить эту логику для работы в моей большей директиве.

Как пропустить прокрутку ребенка div программно без прокрутка большего div?

ответ

1

Вы можете использовать element.scrollTop = x. Вы можете увидеть базовую демонстрацию here - она ​​автоматически прокручивает содержимое дочернего div через 2 секунды.

Демонстрация использует $timeout, очевидно, вам нужно будет поместить эту логику в свою команду $http.

Если у вас есть все остальное сделано, соответствующая часть заключается в следующем:

var target = angular.element(document.querySelector('#result')); 
// #result is your directive's child div 
target[0].scrollTop = 200; 
// You'll have to calculate the exact number if it's not a fix one. 
Смежные вопросы