На моей работе у нас есть сайт с одной страницей, который я создал с помощью AngularJS.
Мы используем плагин ui-router (версия 0.2.0).
Недавно я заметил, что при переходе из одного состояния в другое окно не прокручивается вверх.
Я даже попытался прокрутить его вверх, используя функцию jQuery scrollTop()
при каждом изменении состояния (используя событие $stateChangeSuccess
). Но это не сработало.
Итак, я начал расследование, и я заметил, что scrollTop()
возвращает 0 для каждого элемента на странице.
Не только это, но когда я печатаю window.scrollY
на консоли, я получаю 0 (независимо от того, где я нахожусь на странице). Не только в моем коде, но даже если я просто напишу его в консоли хром-инструментов.
Я написал несколько приложений с AngularJS и ui-router, и это происходит только в этом конкретном.
Я проверил, не перезаписал ли я функцию scrollTop()
или даже поле window.scrollY
, но ничего не нашел.
Я пробовал использовать ui-view
с autoscroll="true"
и autoscroll="false"
, но это не помогло.
Я также попытался предоставить элементы html
и body
height:100%
, и я также попробовал это без него. Но ничего.
Я действительно не знаю, что делать дальше.
Я не смог воспроизвести проблему, но если вы считаете, что есть какой-либо код, который я должен опубликовать здесь, который может быть полезен, я буду рад сделать это.
Спасибо!
EDIT:
Я запустил эту функцию на консоли:
var l = $('*').length;
for(var i = 0; i < l; i++) {
var elem = $('*:eq(' + i + ')');
if(elem.scrollTop() > 0) {
console.log(elem, elem.scrollTop());
}
}
Функция напечатала только один элемент с его верхней прокруткой.
Элемент - это оберточный div, который содержит весь контент и основной вид (у меня есть вложенные представления в моем приложении).
Если я использую scrollTop(0)
для этого элемента, я получаю то, что хотел, но он касается только симптома, а не реальной проблемы.