项目开发中经常会遇到详情返回列表,列表默认在点击详情的高度的问题,特此总结一下,但愿能够帮到大家

刚刚解了一个详情返回列表时候,列表高度保持在点击进去的详情的问题,特此作个分享,但愿你们碰到相似的问题能够直接一遍过,不用卡壳(由于这个在实际项目开发中常常会用到因此分享了出来)html

Vue api 是这样说的 api连接传送门vue

clipboard.png

dome是这样的api

clipboard.png

通过详细查看 (话很少说,贴代码)dom


scrollBehavior (to, from, savedPosition) {
    if(savedPosition) {
        setTimeout(() => {
            window.scrollTo(savedPosition.x, savedPosition.y)
        }, 200)
    }
}

或者结合keep-alive来达到后退时不刷新数据,前进时刷新数据的效果。ide

new VueRouter({
    mode: 'history',
    routes: [{
        path: '/foo',    
        component: (resolve) => {
            require(['views/foo'], resolve)
        },
        meta: {isKeepAlive: true}
    }],
    scrollBehavior (to, from, savedPosition) {
        if (savedPosition || typeof savedPosition == 'undefined') { //从第二页返回首页时savePosition为undefined
            //只处理设置了路由元信息的组件
            from.meta.isKeepAlive = typeof from.meta.isKeepAlive == 'undefined' ? undefined : false;
            to.meta.isKeepAlive = typeof to.meta.isKeepAlive == 'undefined' ? undefined : true;
            if(savedPosition) {
                return savedPosition;
            }
        } else {
            from.meta.isKeepAlive = typeof from.meta.isKeepAlive == 'undefined' ? undefined : true;
            to.meta.isKeepAlive = typeof to.meta.isKeepAlive == 'undefined' ? undefined : false;
        }
    }
})


<keep-alive>
    <router-view v-if="$route.meta.isKeepAlive"></router-view>
</keep-alive>
<router-view v-if="!$route.meta.isKeepAlive"></router-view>

简单的分享给你们,但愿能够帮到大家ui

相关文章
相关标签/搜索