无法弄清楚为什么页面在底部加载? Angular UI-Router自动滚动问题

问题描述 投票:27回答:4

对于我的生活,我无法弄清楚为什么这个主页在底部加载。这是一个角度ui路由器,角度,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 }
    })
javascript css angularjs express angular-ui-router
4个回答
41
投票

Angular UI-Router最近更新了它的应用程序,以便它自动向下滚动到默认加载的新视图。这导致我的应用程序页面向下滚动。要关闭它,只需将以下属性添加到您的ui-view:

<div ui-view="header" autoscroll="true"></div>

10
投票

这是一个可能的解决方案,我使用了一个工作量,因为自动滚动不适合我,所以我强迫我的视图滚动到顶部。希望这可以帮助。

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);

});



}]);

7
投票

在运行块中添加:

$rootScope.$on('$stateChangeSuccess', function () {
  $anchorScroll();
 });

当然你必须注入$ anchorScroll依赖项


0
投票

我刚才遇到了这个问题。发生的事情是你在第1页,向下滚动我想象的页面,然后单击一个按钮转到第2页。当你转到下一页时,路由器不会重新调整你的滚动位置。我通过在所有路线更改上滚动到顶部来修复此问题。

© www.soinside.com 2019 - 2024. All rights reserved.