zoukankan      html  css  js  c++  java
  • mui+vue导致路由跳转问题的解决

    问题详细描述:

    使用vue配置好路由后,在浏览器端可以正常运行,路由正常跳转,但是打包在app端运行时,路由地址就是错的。

    分析:由于手机端(安卓)匹配根地址"/"时是文件夹 

    /storage/emulated/0/Android/data/io.dcloud.HBuilder/apps/HBuilder/...这样的地址,导致路由本身即是错误的。
     
    注:为了浏览器端方便调试,并且快速即方便,开发阶段路由使用两种方式。
    解决办法:
     
    /**2. 模拟器下调试时 **/
        mui.init();
        window.baseAppAdrr; 
        mui.plusReady(function(){
            //平台根地址
            window.baseAppAdrr = plus.io.convertLocalFileSystemURL('_www/web/dist');
            //console.log(baseAdrr)
            const router = new VueRouter({
                mode:'history',  //切换路径模式,编程history模式
                //滚动条滚动行为,不加这个默认就会记忆原来滚动条的位置
                routes: [
                    {
                        /** 模拟器下真实地址
                         * /storage/emulated/0/Android/data/io.dcloud.HBuilder/apps/HBuilder/www/web/dist/index.html
                         * **/
                        path: baseAppAdrr+'/',
                        redirect: baseAppAdrr+ '/msg/home'
                    },{
                        path: baseAppAdrr+'/index.html',
                        redirect: baseAppAdrr+'/msg/home'
                    },
                    {
                        path: baseAppAdrr+'/msg/home',
                        component: Home
                    },{
                        path: baseAppAdrr+'/msg/chat',
                        component: Chat
                    },
                    {
                        path: baseAppAdrr+'/msg/*',
                        redirect: baseAppAdrr+'/msg/home'
                    }
                ]
            });
    
            const vm = new Vue({
                el: '#app',
                store,
                router,
                render: h => h(App)
            }).$mount('#app');
            window.vm = vm;
        });
    

      浏览器端路由配置:

    //1. 浏览器下
    const router = new VueRouter({
        mode:'history',  //切换路径模式,编程history模式
    	//滚动条滚动行为,不加这个默认就会记忆原来滚动条的位置
        routes: [
            {
                path:'/',
                redirect: '/msg/home'
            },{
                path:'/index.html',
                redirect: '/msg/home'
            },
            {
                path:'/msg/home',
                component: Home
            },{
                path:'/msg/chat',
                component: Chat
            },
            {
                path:'/msg/*',
                redirect: '/msg/home'
            }
        ]
    });
    const vm = new Vue({
            el: '#app',
            store,
            router,
            render: h => h(App)
        }).$mount('#app');
        window.vm = vm;
    

      而如果要使用两种都匹配的话:只需要判断当前是否是手机

    //判断是否是手机安卓或者ios平台
    function isAppIos(){
        return (mui.os.ios || mui.os.android)? true: false;
    }
    

      

    同样: 跳转路由时, 我们使用编程式路由跳转:

    window.vm.$router.push({path:'/msg/chat'});

    这样跳转时我们也要预先判断当前的运行环境:

    也可以预先定义一个函数:

    //路由跳转
    function routeJump(path){
        if(isAppIos()){
            //此处baseAppAddr为定义的手机端平台文件根地址
            window.vm.$router.push({path: window.baseAppAdrr+ path});
        }else{
            window.vm.$router.push({path: path});
        }
    }
    

      引用方法使用:  routeJump('/msg/chat');即可。

  • 相关阅读:
    CNN5 调用 C实现pool2d im2col col2im
    CUDA学习3 Max pooling (python c++ cuda)
    CUDA学习2 基础知识和Julia示例
    CUDA学习1 在Visual Studio和CodeBlocks上配置
    线性搜索
    CNN4 参数优化
    CNN3 im2col
    CNN2 多层卷积
    爬虫:Scrapy8
    爬虫:Scrapy7
  • 原文地址:https://www.cnblogs.com/burtyang/p/9676429.html
Copyright © 2011-2022 走看看