Не могу понять, почему страница загружается внизу? Angular Ошибка автопрокрутки UI-Router
В жизни я не могу понять, почему эта главная страница загружается внизу. Является ли это angular ui-router, angular, javascript или CSS проблемой? Я застрял на этом в течение двух часов и не знаю, почему моя страница html загружается внизу, а не сверху, действительно убивает мою самооценку как программиста:/
Вот главная страница: [URL Redacted]
ОБНОВЛЕНИЕ -
Я решил эту проблему. Это было с angular UI-Router. См. Мой ответ ниже для простого исправления.
Я использую angular и angular UI-Router, и настройка выглядит так:
default.jade
doctype html
html(lang='en', xmlns='http://www.w3.org/1999/xhtml', xmlns:fb='https://www.facebook.com/2008/fbml', itemscope='itemscope', itemtype='http://schema.org/Product')
include ../includes/head
body(ng-controller="RootController")
block content
include ../includes/foot
index.jade
extends layouts/default
block content
section.container
div(ui-view="header")
div(ui-view="content")
div(ui-view="footer")
Angular Config.js
window.app.config(function($stateProvider, $urlRouterProvider) {
// For any unmatched url, redirect to "/"
$urlRouterProvider.otherwise("/");
// Now set up the states
$stateProvider
.state('home', {
url: "/",
views: {
"header": { templateUrl: "views/header/home.html" },
"content": { templateUrl: "views/content/home.html" },
"footer": { templateUrl: "views/footer/footer.html" }
},
resolve: { factory: setRoot }
})
.state('signin', {
url: "/signin",
views: {
"header": { templateUrl: "views/header/signin.html" },
"content": { templateUrl: "views/content/signin.html" },
"footer": { templateUrl: "views/footer/footer.html" }
},
resolve: { factory: setRoot }
})
Ответы
Ответ 1
Angular UI-Router недавно обновил приложение, чтобы он автоматически прокручивался до новых просмотров, загруженных по умолчанию. Это заставляло страницы моего приложения загружать прокрутку вниз. Чтобы отключить это, просто добавьте следующий атрибут в свой ui-view:
<div ui-view="header" autoscroll="true"></div>
Ответ 2
вот возможное решение, я использовал средство поиска, так как автоматическая прокрутка не работала для меня, поэтому я заставил свое представление прокрутить вверх. Надеюсь, это поможет.
app.run(['$window', '$rootScope', '$location' ,'$cookieStore', '$state', 'CacheManager', '$timeout', function($window, $rootScope, $location, $cookieStore, $state,CacheManager, $timeout){
$rootScope.$on('$viewContentLoaded', function(){
var interval = setInterval(function(){
if (document.readyState == "complete") {
window.scrollTo(0, 0);
clearInterval(interval);
}
},200);
});
}]);
Ответ 3
в блоке запуска добавьте:
$rootScope.$on('$stateChangeSuccess', function () {
$anchorScroll();
});
Конечно, вам нужно ввести зависимость $anchorScroll
Ответ 4
Я столкнулся с этим вопросом некоторое время назад. Что происходит, вы находитесь на странице 1, прокручиваете страницу, которую я себе представляю, затем нажмите кнопку, чтобы перейти на страницу 2. Затем маршрутизатор не перенастраивает позицию прокрутки, когда вы переходите на следующую страницу. Я исправил это, прокручивая вверх на всех изменениях маршрута.