1

就我而言,我使用过vueand vue-router。我犯了一个问题,即该saveScrollPostion属性无法正常工作。

这是我的代码:

router.js

export default router => {
"use strict"
router.map({
    //'/': {
    //    component: null
    //},
    '/blogs': {
        component: require('./views/ArticleListPage.vue'),
        subRoutes: {
            '/': {
                component: require('./components/ArticleList/ArticleListSection.vue'),
            },
            '/tag/:name': {
                component: require('./components/ArticleList/ArticleListSection.vue'),
                name: 'tag'
            },
            '/classification/:name': {
                component: require('./components/ArticleList/ArticleListSection.vue'),
                name: 'classification'
            }
        }
    },
    '/projects': {
        component: require('./views/ProjectPage.vue')
    },
    '/about': {
        component: require('./views/AboutPage.vue')
    },
    '/p/:id': {
        component: require('./views/ArticlePage.vue')
    },
    '*': {
        component: require('./views/NotFound.vue')
    }
});

router.beforeEach(()=>{

});

index.js中,实例中有两个设置Router

const router = new Router({
    history: true,
    saveScrollPosition: false
});

问题是: 如果去任何/p/:id一条路线并向下滚动页面,您会发现返回后上一页也滚动了。

我已经阅读了vue-router文档,上面写着 saveScrollPostion

如果您有过渡效果,可能无法按预期工作。

删除设置时,或者只是将其更改saveScrollPosition为 false,问题仍然存在。

我想是router.map我写的方法导致了错误的结果。

我还想知道我的项目代码中是否存在任何错误,而不是vue-router导致此问题的设置。

此外,我还没有transition在路线转换之间编写任何设置。

谢谢大家回答我的问题。

4

1 回答 1

2

尝试查看 Vue 的 $route 属性,例如:

watch: {
    $route: function() {
        window.scrollTo(0,0);
    }
}
于 2017-02-07T18:21:08.947 回答