vue路由缓存问题及混合开发路由控制问题

问题描述(vue):

1、在移动端项目中,使用了vux框架,在客户界面有三个分类,包括经销商、企业、家庭用户,三个分类均可下拉滚动加载操作,点击分类即切换查询条件,当我们切换到经销商,滚动加载到下一页后,点击某个经销商,跳转到某个界面后,点击返回,发现该客户界面被刷新了,用户无法返回点击某个经销商之前的数据状态。

2、移动端为微信公众号项目,需要为安卓和iOS提供部分设备详情界面,调用方式为: https:xx.xxx.com/#/xxx?item=xxx,在路由控制守卫中已经拦截掉未登录用户,若发现该用户未登录,则跳转到登录界面。

解决问题:

1、针对第一个问题,采用路由缓存来解决,但只针对特别几个界面缓存,而不是全部。
主要使用vue的keep-alive组件,具体实现如下:

//App.vue,根据router配置来判断是否缓存该路由
<div id="app">
    <router-view v-if="!$route.meta.keepAlive"/>
    <keep-alive>
        <router-view v-if="$route.meta.keepAlive"/>
    </keep-alive>
</div>
//router/index.js,路由配置文件
{
    path: 'dCustomerPage',
    name: '客户管理',
    component: dCustomerPage,
    meta:{
        keepAlive: true,
    }
},

2、第二个问题主要是路由控制,通过路由配置,来判断是否可以被外部访问,只有meta中配置了为allowEA为true时,可以直接访问,其他路由需要登录后彩壳访问。

//main.js,路由守卫方法,进入时判断
else if(to.meta && to.meta.allowEA == true){
    next();
}else{
    next('/')
}
//router/index.js,配置路由文件
{
    path: '/outEquitDetail',
    name:'outEquitDetail',
    component: outEquitDetail,
    meta:{
        allowEA: true
    }
},

其他问题

1、通过内置浏览器判断移动设备类型

var ua = navigator.userAgent.toLowerCase();//获取判断用的对象
        if (ua.match(/MicroMessenger/i) == "micromessenger") {
            //在微信中打开
            
        }
        if (ua.indexOf('iphone')>0) {
            //是否在IOS浏览器打开
            
        }if(ua.indexOf('android')>0){
            //是否在安卓浏览器打开
            
        }else {
            //其他
            
        }

2、vux组件–>scroller,滚动后切换导致部分界面看不到

//scroller为scroller组件绑定的ref的值,reset方法的参数不能省略
this.$nextTick(()=>{
    this.$refs.scroller.reset({top:0})
})
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值