第一步:路由文件的配置(对你所需要的vue文件进行保存缓存标志的添加)

import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'
import Message from '@/components/Message'
import Search from '@/components/Search'
import Home from '@/components/bottomBar/Home'
import Person from '@/components/bottomBar/Person'
import Release from '@/components/bottomBar/Release'
import Collection from '@/components/bottomBar/Collection' Vue.use(Router);
const routes =[
{
path: '/',
name: 'HelloWorld',
component: HelloWorld,
children: [
{
path:'home',
component:Home, meta: {
title: 'home',
keepAlive: true
}
},
{
path:'person',
component:Person
},
{
path:'release',
component:Release
},
{
path:'collection',
component:Collection
}
]
},
{
path:"/message",
component:Message
},
{
path:"/search",
component:Search
}
];
const router = new Router({
routes,
}); export default router

第二步:router-view的设置

<template>
<div id="index">
<keep-alive >
<router-view v-if="$route.meta.keepAlive"></router-view>
</keep-alive>
<router-view v-if="!$route.meta.keepAlive"></router-view>
<van-tabbar v-model="active">
<van-tabbar-item icon="home" to="/home">首页</van-tabbar-item>
<van-tabbar-item icon="records" to="/release">发布</van-tabbar-item>
<van-tabbar-item icon="idcard" to="/collection">收藏</van-tabbar-item>
<van-tabbar-item icon="contact" to="/person" :dot="true">个人中心</van-tabbar-item>
</van-tabbar> </div>
</template> <script>
export default {
data () {
return {
value:"",
active:
}
},
mounted(){
this.$router.push("/home")
},
methods:{ }
}
</script> <!-- Add "scoped" attribute to limit CSS to this component only -->
<style lang="less">
#index{
.van-tabbar{
height: .1rem;
border-top: 1px solid #eee;
.van-tabbar-item--active{
color: orange;
}
.van-tabbar-item__icon{
font-size: .5rem;
.van-info{
padding: .05rem .1rem;
line-height: .3rem;
right:-.1rem;
}
}
}
}
</style>

第三步:在你需要保存位置的vue文件里面进行操作

<template>
<div class="htmlGlobal">
<div id="home">
<van-row>
<van-col span="" id="message" @click.native="goToMessageHtml">
<van-icon name="chat" :class="{'dot':true}"/>
</van-col>
<van-col span="" id="search">
<van-search
placeholder="搜你感兴趣的"
v-model="value"
background="orange"
@focus="goToSearchHtml"
/>
</van-col>
<van-col span=""></van-col>
</van-row>
</div>
<div id="noticeBar">
<van-notice-bar mode="closeable"
:text=noticeValue
left-icon="http://img.yzcdn.cn/vant/volume.png"
/>
</div>
<div id="vanSwipe">
<van-swipe :autoplay="" indicator-color="orange">
<van-swipe-item></van-swipe-item>
<van-swipe-item></van-swipe-item>
<van-swipe-item></van-swipe-item>
<van-swipe-item></van-swipe-item>
</van-swipe>
</div>
<div id="vanTabs" >
<van-tabs swipeable v-model="tabActive" :class="{'fixed':fixed}">
<van-tab v-for="(item,index) in tabsArr" :title="item.name" :key="index">
</van-tab>
</van-tabs>
<ShopList :index="tabActive"></ShopList>
</div>
</div>
</template> <script> import ShopList from '../ShopList'
export default {
beforeRouteLeave(to, from, next){
this.$store.commit("set_scrollTop",this.scroll);
next();
},
activated () {
this.$nextTick(function(){
let position = this.$store.state.scrollTop; //返回页面取出来
window.scrollTo(, position); })
},
components:{
ShopList
},
data(){
return{
scroll:,
fixed:false,
value:'',
//二手物品的分类信息
tabsArr:[
{
name:"书籍",
requestCode:"",
},
{
name:"生活百货",
requestCode:"",
},
{
name:"乐器",
requestCode:"",
},
{
name:"数码",
requestCode:"",
},
{
name:"服饰鞋包",
requestCode:"",
},
{
name:"美妆捡漏",
requestCode:"",
},
{
name:"运动户外",
requestCode:"",
},
{
name:"健身器材",
requestCode:,
}
],
noticeValue:"足协杯战线连续第2年上演广州德比战",
tabActive:
}
},
methods:{
goToMessageHtml(){
this.$router.push("/message");
},
goToSearchHtml(){
this.$router.push("/search");
},
handleScroll(){
if(document.getElementById('vanTabs')){
this.scroll = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
var offsetTop = document.getElementById('vanTabs').offsetTop;
if (this.scroll > offsetTop) { this.fixed = true;
} else {
this.fixed = false
}
}
} }, destroyed () {
window.removeEventListener('scroll', this.handleScroll)
},
mounted(){
this.$nextTick(()=>{
window.addEventListener('scroll', this.handleScroll)
})
}
}
</script> <style lang="less">
.fixed{
position: fixed !important;
top: ;
left: ;
}
.htmlGlobal{
background-color: #ccc;
box-sizing: border-box;
}
#home{
background-color:orange;
height: 1rem;
box-sizing: border-box;
padding: .1rem;
.van-row{
height: %;
#message{
height: %;
.van-icon{
font-size: .5rem;
top: -.4rem;
left: .13rem;
color: #fff;
.van-info{
padding: .05rem .1rem;
line-height: .3rem;
right:-.05rem;
}
} }
#search{
.van-search{
padding: ;
padding-top: .1rem;
.van-cell{
border-radius: 20px;
height: .6rem;
.van-cell__left-icon{
font-size: .4rem;
position: absolute;
top: .15rem;
bottom: .1rem;
}
.van-field__body{
position: absolute;
left: .5rem;
top: .05rem;
bottom: .1rem;
right: ;
input{
font-size: .3rem;
}
}
}
}
}
} }
#noticeBar{
.van-notice-bar{
height: .8rem;
.van-notice-bar__left-icon {
height: %;
line-height: .8rem;
img{
width: .4rem;
height: .4rem;
vertical-align: middle;
}
}
.van-notice-bar__wrap{
height: %;
line-height: .8rem;
.van-notice-bar__content{
font-size: .3rem;
}
}
.van-icon.van-icon-close.van-notice-bar__right-icon{
font-size: .35rem;
right: .1rem;
top: .22rem;
}
}
}
#vanSwipe{
.van-swipe{
/*margin: 0 .3rem;*/
height:3rem;
.van-swipe-item{
background-color: deepskyblue;
border-radius: 5px;
}
}
}
#vanTabs{
.van-tabs{ }
}
</style>

vue中路由返回上一个页面,恢复到上一个页面的滚动位置的更多相关文章

  1. vue中路由按需加载的几种方式

    使用vue-cli构建项目后,我们会在Router文件夹下面的index.js里面引入相关的路由组件,如: import Hello from '@/components/Hello' import ...

  2. vue中,对象数组多层嵌套时,更新数据更新页面

    vue中的对象和数组的元素直接赋值修改时,是不能响应到view中去的 1.对象更新 this.a={title:'列表1’}; this.a.title='列表2’; <h1>{{a.ti ...

  3. Vue中路由的使用

    在Vue中动态挂载组件 首先需要安装  cnpm install vue-router --save 在main.js中引入VueRouter 并使用 定义一个路由 创建router实例 通过rout ...

  4. Vue中ajax返回的结果赋值

    这是第二次在项目中遇到此问题,ajax请求成功后在success函数中为Vue实例data里的变量赋值,却失败了 new Vue({ el:'#app', data:{ msg:'' }, creat ...

  5. VUE中实现iview的图标效果时遇到的一个问题

    [Vue warn]: You are using the runtime-only build of Vue where the template compiler is not available ...

  6. vue-router 页面切换后保持在页面顶部而不是保持原先的滚动位置的办法

    vue-router有提供一个方法scrollBehavior,它可以使切换到新路由时,想要页面滚到顶部,或者是保持原先的滚动位置,就像重新加载页面那样. 这个功能只在 HTML5 history 模 ...

  7. vue中路由传参的方式

    一.params的类型: 配置路由格式: /router/:id 传递的方式: 在path后面跟上对应的值 传递后形成的路径: /router/123, /router/abc 通过:to字符串拼接的 ...

  8. 【每天学一点-06】在Vue中使用Vant-Picker选择器,并且给选择器添加一个类似Antd-Select-showSearch的搜索功能

    一.在Vant文档中,Picker组件的API中是没有showSearch这一选项的 1.Vant-Picker 文档 2.Antd-Select 文档 3.需要完成的需求 4.因为在H5项目中出现了 ...

  9. Vue中data返回对象和返回值的区别

    速记:粗浅的理解是,事件的结果是影响单个组件还是多个组件.因为大部分组件是要共享的,但他们的data是私有的,所以每个组件都要return一个新的data对象 返回对象的时候 <!DOCTYPE ...

随机推荐

  1. 洛谷P1177快速排序

    传送门 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> ...

  2. 网络协议之UDP

    前言 TCP协议在不可靠的网络环境上提供了可靠的通信通道,隐藏了大量的底层细节,使应用程序更加简洁.但有些应用并不需要这么高的可靠性,并不需要按序交付,而且TCP为了提高可靠性也增加了延时,在某些对延 ...

  3. Codeforces 2B The least round way(dp求最小末尾0)

    题目链接:http://codeforces.com/problemset/problem/2/B 题目大意: 给你一个nxn的矩形,找到一条从左上角到右下角的路径,使得该路径上所有数字的乘积的末尾0 ...

  4. VS Code折腾记 - (1)扯淡

    题外话 距离上篇介绍VSCode的文章已经过去四十多天,已经在正式项目作为主力开发工具了. 社区的发展非常快速,更新迭代够快,功能基本已经满足我所需了: 这个系列教程基于最新的vs code 1.8. ...

  5. Visual Studio Code 常用插件整理

    常用插件说明: 一.HTML Snippets 超级使用且初级的H5代码片段以及提示 二.HTML CSS Support  让HTML标签上写class智能提示当前项目所支持的样式 三.Debugg ...

  6. Spark(七)Spark内存调优

    一.概述 Spark 作为一个基于内存的分布式计算引擎,其内存管理模块在整个系统中扮演着非常重要的角色.理解 Spark 内存管理的基本原理,有助于更好地开发 Spark 应用程序和进行性能调优.本文 ...

  7. Opencv算法运行时间

    使用getTickCount() 需要导入命名空间cv,using namespace cv; double t = getTickCount(); funciont(); double tm = ( ...

  8. Loadrunner乱码问题

    在LoadRunner中录制脚本时,出现乱码的问题解决 我在录制一个Web的脚本时,出现中文乱码. 原因为Web中采用的是UTF-8编码,而录制脚本的选项默认没有把支持UTF8选中. 方法:1. To ...

  9. atomikos + druid 连接超时失效

    atomikos + druid 连接超时失效,需要多次连接才能成功. 首次连接会报异常: 2018-01-08 16:58:12 DEBUG [com.jpcar.model.dao.jpcar.A ...

  10. Salt 与Salt API配置

    1.安装 [root@localhost yum.repos.d]# cat /etc/yum.repos.d/salt.repo [saltstack-repo] name=SaltStack re ...