vue中使用window.open()打开另一页面和使用this.$router.push()跳转页面,在这个页面返回时保留上一个页面的查询信息

如果使用this.$router.push()跳转页面,可以在路由钩子beforeRouteLeave中使用先将需要保留的信息利用sessionStorage.setItem保存一份

例如:

beforeRouteLeave(to,from,next){
    if(to.name=='nextPage'){
        sessionStorage.setItem('currentPage',this.page)
        sessionStorage.setItem('currentPageSize',this.pageSize)
        sessionStorage.setItem('searchForm',JSON.stringify(this.dataForm))
    }else{
        sessionStorage.setItem('currentPage',1)
        sessionStorage.setItem('currentPageSize',10)
        let dataForm={name:'',age:''}
        sessionStorage.setItem('searchForm',JSON.stringify(dataForm))
    }
    next()
}

再在created里获取一下获取保存的这些信息

if(sessionStorage.getItem('currentPage')){
    this.page=sessionStorage.getItem('currentPage')
}
if(sessionStorage.getItem('currentPageSize')){
    this.pageSize=sessionStorage.getItem('currentPageSize')
}
if(sessionStorage.getItem('searchForm')){
    this.dataForm=sessionStorage.getItem('searchForm')
}

有可能出现当前页不更新的问题,可以在分页组件上绑定当前页和每页条数,再设置v-if="pageshow",data里pageshow初始值是true,在created里先将this.pageshow=false

this.getData();this.$nextTick(()=>{this.pageshow=true}),

如果使用window.open()打开另一个页面,再返回操作

在主页面的时候,将需要的信息带过去

let _url=this.$router.resolve({
    name:'nextPage',
    query:{
        page:this.page,
        pageSize:this.pageSize,
        pageName:'mainPage',
        searchForm:JSON.stringify(this.dataForm)
    }
})
window.open(_url.href,'_blank')

在nextPage页面返回的时候,使用this.$router.push({name:`${this.$route.query.pageName}`,params:{page:`${this.$route.query.page}`,pageSize:`${this.$route.query.pageSize}`,search:`${this.$route.query.searchForm}`,}})

在mainPage主页面使用路由钩子beforeRouteEnter

beforeRouteEnter(to,from,next){
    next(vm=>{
        if(from.name=="nextPage"){
            vm.page=to.params.page
            vm.pageSize=to.params.pageSize
            vm.dataForm=JSON.parse(to.params.searchForm)
            vm.pageshow=false
            vm.getData()
            vm.nextTick(()=>{
                vm.pageshow=true
            })
        }else{
            vm.getData()
        }
    })
}

这种情况下,created里请求数据的方法需要注销掉。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值