vue中同一个页面参数不同动态改变数据与标题

背景

要求做一个页面,可以在菜单配置参数后直接跳转显示不同的报表;

具体步骤

步骤1:接收参数

参数配置与路由拦截这里不详细说,可以参考vue配置参数跳转

说明:这里参考的是saber框架中的特殊情况,如果不是在此框架中 url一般是 /web/index/123 ,然后配置路由以便接收,然后在页面接收该参数即可;(当然传参还有其它方法,具体可以参考这位博主总结的vue路由传参;)

配置路由

页面接收参数

      const temp = this.$route.params.pageId;
      console.log("temp---"+temp);

步骤2:动态改变页面数据

若传入参数不同,页面还显示一样的数据,说明没有动态改变,那么只需要加一个监听事件,在参数改变的时候,同时重新请求数据即可;

 watch: { // 监听,当路由发生变化的时候执行
        '$route.path': {
            handler(toPath, fromPath){//这里的toPath是当前页面的url,fromPath则是上一个页面的url
                this.pageId=this.$route.params.pageId //接收参数;
                //此处url为/web/index/123 加路由配置
                //如果url拼接格式为/web/index?userID=111 
                //那么接收参数方法为 this.$route.query.userID

                if(this.pageId){
                  this.getTicket(this.pageId);
                }

            },
            deep: true, // 深度监听
            immediate: true, // 第一次初始化渲染就可以监听到
        }
    },

步骤3:标题动态改变

方法一:更改菜单点击逻辑(次优)

因为菜单点击逻辑为 路由相同时不会改变名字,名字都统一为排序第一个的名字;因此找到菜单点击逻辑,修改页面名字即可;

PS:修改逻辑后,路由拦截参数那种方法会报错,暂时不知道解决方法;这种解决方法,菜单传参都不能用配置路由的方法;

菜单属性

修改菜单点击逻辑

   open (item) {
      this.$router.push({
      name: item.name,//动态修改页面名字
      path: item[this.pathKey],
      query: func.isJSON(item.remark) ? JSON.parse(item.remark) : item[this.queryKey]
//这里是利用菜单本有的备注属性去传参,逻辑是利用工具类判断是否为json类,然后接收参数this.$route.query.userID
      });
    }

方法二:更改携带参数(更优)

查看菜单点击后拦截代码逻辑,发现标题设置也可以在query中加入;

因此在菜单属性中多加一个name 的属性即可;


以上即为本人项目中的处理思路,若有帮助到你,那真的太好了!

若没有望亲喷

PS:其中动态改变页面标题的还有一种方式,具体可以参考这个博文,写的不错动态title设置; 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值