其他分享
首页 > 其他分享> > addRoutes

addRoutes

作者:互联网

<!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <title>权限控制- filters</title>     <link rel="stylesheet" href="css/animate.css">     <style>         .active{             font-size:20px;             color:#ff7300;             text-decoration:none;
        }         .main-menu a {             display: inline-block;             margin-right: 10px;         }     </style>     <script src="js/vue.js"></script>     <script src="js/vue-router.js"></script> </head> <body>     <div id="itapp">         <div class="main-menu">             <!-- <router-link to="/home">主页</router-link>             <router-link to="/user">用户</router-link>             <router-link to="/finance">财务信息</router-link> -->
            <!-- 写成动态的 -->             <!-- $router.options.routes  可以从计算器属性-->             <router-link v-for="(item,index) in $router.options.routes" :key="index" :to="item.path">{{item.meta.title}}</router-link>             <!-- <router-link v-for="(item,index) in getMyRoutes" :key="index" :to="item.path">{{item.meta.title}}</router-link> -->                      </div>         <div>             <transition enter-active-class="animated bounceInLeft" leave-active-class="animated bounceOutRight">                 <router-view></router-view>             </transition>         </div>
        <hr>         <button @click="push">添加路由</button>         <button @click="replace">替换路由</button>     </div>
    <template id="user">         <div>             <h3>用户信息</h3>             <ul>                 <router-link to="/user/login?name=tom&pwd=123" tag="li">用户登陆</router-link>                 <router-link to="/user/regist/alice/456" tag="li">用户注册</router-link>                 <router-link to="/user/info" tag="li">用户注册</router-link>             </ul>             <router-view></router-view>         </div>     </template>
    <script>         var Home={             template:'<h3>我是主页</h3>'         }         var User={             template:'#user'         }         var Login={             template:'<h4>用户登陆。。。获取参数:{{$route.query}},{{$route.path}}</h4>'         }         var Regist={             template:'<h4>用户注册。。。获取参数:{{$route.params}},{{$route.path}}</h4>'         }         var Finance={             template:'<h4>财务信息</h4>'         }
        var routes=[             {                 path:'/home',                 component:Home,                 meta: {                     title: '首页',                     roles: ['admin','guest']                  }             },             {                 path:'/user',                 component:User,                 meta: {                     title: '用户',                     roles: ['admin','guest']                  },                 children:[                     {                         path:'login',                         component:Login                     },                     {                         //动态路由匹配  // 动态路径参数 以冒号开头                         path:'regist/:username/:password',                         component:Regist                     }                                      ]             },             {                 path:'/finance',                 component:Finance,                 meta: {                     title: '财务信息',                     roles: ['admin']                  }             },                 {                 path:'*',                 redirect:'/home',                 hidden: true             }         ]
        //过滤需要显示的路由 , 权限控制         //第一种方式, 通过设置 是否有权限 roles参数来过滤 guest为游客 
        routes = routes.filter((option,index)=>{             return !option.hidden && (option.meta && option.meta.roles.includes('guest'));         })
        const routerAll=new VueRouter({             routes, //简写,相当于routes:routes             linkActiveClass:'active', //更新活动链接的class类名,默认的激活的 class             linkExactActiveClass:'active-extact',  //精确激活的 class             mode: "hash", //默认         });                      new Vue({             el:'#itapp',             router:routerAll, //注入路由             // test:routerAll,   //this.$options.test             computed:{                 getMyRoutes(){                     var thisData = this.$router.options.routes;                     var test1 = thisData.filter((option)=>{                         return option.meta                     })                     return test1;                 }             },             methods:{                 push(){                     // this.$options.test.push({path:'home'})                     this.$router.push({path:'home'}); //添加路由,切换路由                     // routerAll.push({path:'home'}); //添加路由,切换路由
                    // 获取参数                      // this.$route.query                                      },                 replace(){                     routerAll.replace({path:'user'}); //替换路由,没有历史记录                 }             }         });     </script> </body> </html>

标签:option,addRoutes,routes,meta,var,path,路由
来源: https://www.cnblogs.com/laneyfu/p/12342575.html