zoukankan      html  css  js  c++  java
  • vue路由监听及路由守卫

    路由监听:

    //当一个组件被复用的时候,那么路由发生变化,但是页面上面的数据不会发生变化
    新建one.vue 组件 作为home的子组件,在home.vue 中写遍历渲染页面 ,并用params传参,
    one中 因为created只执行了一次,就接收都第一次传的值,所以需要监听

    方案:

    1、watch :{ "$route"(to,from){ this.name = to.params.name ; } }
    to 中有params 属性,有name 和 id
    from (从哪来,上一次点击的记录)

    路由守卫 2、路由守卫1 !!!

    beforeRouteUpdate(to,from,next){ this.name = to.params.name ;next() }
    to 中params 属性 有name 和id
    next() 必加,to

    3、路由守卫2 !!! 离开时

    beforeRouteLeave(to,from,next){ var flag = confirm("您确定要离开吗") if(flag){ next() }}
    confirm 中,点击确定为true,取消为false;next必须

    4、路由守卫3 !!! 进入时

    访问不到this,因为进入前 组件没有导入。调用next函数
    beforeRouteEnter(to,from,next){
    // 访问不到this,因为进入前组件没有导入,需要用到next
    next((vm)=>{
    // 通过ajax的success 接收后台传来的 登录状态
    let flag = false;
    if(!flag){
    vm.$router.push("/login");
    }else{
    next();
    } }

    全局守卫:index.js 中

    const router = new Router{ ... }
    //验证用户的登录状态
    router.beforeEach(to,from,next){
    let flag = false;
    //需要全局守卫的路由的name
    let routers = ["find","order","my"]
    //
    if(routers.indexOf(to.name)>=0){
    if(!falg){
    router.push("/login")
    }else{
    next();
    }
    }else{
    next();
    }
    }


    export default router
    index.js 中导出router

  • 相关阅读:
    Property [*****] not found on type [com.erp.pojo.ErpSupplier]
    python 杀死线程的两种方式
    docker的学习之认识docker(一)
    Ubuntu下 MySQL不支持中文解决办法
    Django项目创建
    git介绍
    python 实现链表的逆置
    python 实现链表的增删改查(双向链表)
    python----super
    python面向对象
  • 原文地址:https://www.cnblogs.com/-roc/p/9933438.html
Copyright © 2011-2022 走看看