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


    背景

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

    具体步骤

    步骤1:接收参数

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

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

    配置路由

    页面接收参数

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

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

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

    1. watch: { // 监听,当路由发生变化的时候执行
    2. '$route.path': {
    3. handler(toPath, fromPath){//这里的toPath是当前页面的url,fromPath则是上一个页面的url
    4. this.pageId=this.$route.params.pageId //接收参数;
    5. //此处url为/web/index/123 加路由配置
    6. //如果url拼接格式为/web/index?userID=111
    7. //那么接收参数方法为 this.$route.query.userID
    8. if(this.pageId){
    9. this.getTicket(this.pageId);
    10. }
    11. },
    12. deep: true, // 深度监听
    13. immediate: true, // 第一次初始化渲染就可以监听到
    14. }
    15. },

    步骤3:标题动态改变

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

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

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

    菜单属性

    修改菜单点击逻辑

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

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

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

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


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

    若没有望亲喷

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

  • 相关阅读:
    io.net 是什么,DePIN(去中心化物理基础设施网络)
    Vue学习笔记
    build g2o viewer on macos
    curl命令的那些事
    尚硅谷-JVM-性能监控与调优篇(P302~P381)
    CopyOnWriteArrayList源码分析
    Java常用功能
    易基因: Nature Biotech:番茄细菌性青枯病的噬菌体联合治疗|国人佳作
    Vue Router完整的导航解析流程
    SpringMVC实现文件的上传和下载
  • 原文地址:https://blog.csdn.net/unstoppableyi/article/details/133340700