第一步:路由文件的配置(对你所需要的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. MongoDB安全:所有操作(Privilege Actions)

    本文展示了两张思维导图,分别是MongoDB 3.6.4.0的所有权限操作,未做深入研究,仅仅是列出来. 3.6总共9类105个操作,4.0版本比3.6多了两类操作,同时增加了3个操作,共11类108 ...

  2. 利用vw+rem实现移动web适配布局

    基本概念 1.单位 Px(CSS pixels) 像素 (px) 是一种绝对单位(absolute units), 因为无论其他相关的设置怎么变化,像素指定的值是不会变化的 其实是相对于某个设备而言的 ...

  3. gitlab备份与还原

    1.备份 登录原服务器,执行命令: gitlab-rake gitlab:backup:create 备份后文件在如下目录,下载该文件 /var/opt/gitlab/backups 2.还原 先安装 ...

  4. Code Conventions for the JavaScript Programming Language

    This is a set of coding conventions and rules for use in JavaScript programming. It is inspired by t ...

  5. Centos7.3安装vsftp服务

    我们需要向centos操作系统的服务器上上传文件或者下载文件,这时候,ftp有必要安装下, 我们选择主流的vsftp: 第一步:安装vsftp yum install -y vsftpd 第二步:设置 ...

  6. 在 Python 中使用 GDB 来调试 转载

    2013/11/01 | Comments 大约一年前,我接触了 Java 中的 Btrace 能够不停机查看线上 JVM 运行情况的特性让我艳羡不已. 另外还有强悍的 jStack 和 jConso ...

  7. 【TensorFlow】Python解析xml文件

    最近在项目中使用TensorFlow训练目标检测模型,在制作自己的数据集时使用了labelimg软件对图片进行标注,产生了VOC格式的数据,但标注生成的xml文件标签值难免会产生个别错误造成程序无法跑 ...

  8. 使用Github的gh-pages分支展示一个页面

    Github有一个Github pages的功能可以搭建博客或者托管网页,是免费使用的. 首先你的注册Github账号 下载安装git Github官网操作 登录到Github上,创建一个名为 Git ...

  9. Windbg在应用层调试漏洞时的应用

    主要记录一些在应用层调试漏洞的技巧,不会写一些基本的命令,只记录比较有用的平时难以想到的调试方法. 1.!address eax 查看对应内存页的属性,如果poc触发异常之后就可以用这个指令看一下触发 ...

  10. PHP性能调优---php-fpm - 启动参数及重要配置详解

    约定几个目录/usr/local/php/sbin/php-fpm/usr/local/php/etc/php-fpm.conf/usr/local/php/etc/php.ini 一,php-fpm ...