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

背景

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

具体步骤

步骤1:接收参数

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

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

配置路由

vue中同一个页面参数不同动态改变数据与标题_第1张图片

页面接收参数

      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:标题动态改变

vue中同一个页面参数不同动态改变数据与标题_第2张图片

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

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

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

菜单属性

vue中同一个页面参数不同动态改变数据与标题_第3张图片

修改菜单点击逻辑

   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
      });
    }

vue中同一个页面参数不同动态改变数据与标题_第4张图片

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

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

vue中同一个页面参数不同动态改变数据与标题_第5张图片

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

vue中同一个页面参数不同动态改变数据与标题_第6张图片


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

若没有望亲喷

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

你可能感兴趣的:(项目实用技术,前端)