Vue 子路由页面发消息给主路由页面 ,实现主页面显示子页面的信息

需求

子页面进入后,能在主页面显示子页的相关信息,比如说主页面的菜单激活的是哪个子页面的菜单项

如上图,当刷新浏览器页面时,让菜单的激活项仍保持在【最近浏览】。

实现方式:

在子页面的create事件中增加:

javascript 复制代码
    created(){
        console.log("子路由打开=====", this.$route.path)
        this.$emit("childOpen", this.$route.path);
    },

主页面 router-view 中 增加:

javascript 复制代码
      <router-view @childOpen="childOpen"></router-view>  


...


    childOpen(url) {
      console.log("url1====", url)
      if (url == "/recovery") {
        this.activeMenu = "recovery"
      }
      else if (url == "/history") {
        this.activeMenu = "history"
      }
      else if (url == "/person") {
        this.activeMenu = "person"
      }
      else if (url == "/collect") {
        this.activeMenu = "collect"
      }
    },

主页面菜单相关代码:

javascript 复制代码
      <div class="menu">
        <div class="item pointer" :class="{'activeMenu' : activeMenu=='person'}"  @click="menuClick('person')"><img class="huiyuan-ico" src="@/assets/images/kongjian2.png"/><div>个人空间</div></div>
        <div class="item pointer" :class="{'activeMenu' : activeMenu=='history'}"  @click="menuClick('history')"><img class="huiyuan-ico" src="@/assets/images/history2.png"/><div>最近浏览</div></div>
        <div class="item pointer" :class="{'activeMenu' : activeMenu=='collect'}"  @click="menuClick('collect')"><img class="huiyuan-ico" src="@/assets/images/like2.png"/><div>我的收藏</div></div>
        <div class="item pointer" :class="{'activeMenu' : activeMenu=='recovery'}"  @click="menuClick('recovery')"><img class="huiyuan-ico" src="@/assets/images/hsz2.png"/><div>收回站</div></div>
      </div>

这样,当子路由的页面create后,就会告诉主页面,「我打开了」,主页面收到消息后,得到了具体的页面地址,通过地址判断是打开了哪个页面,从页主页面就激活具体的哪项菜单。

相关推荐
cooldream200920 小时前
Nginx 部署 Vue 项目后首页空白问题深度解析:从样式冲突到路由配置的系统性排查
运维·vue.js·nginx
天天向上102420 小时前
在 Element Plus 中实现开始日期小于结束日期的验证
前端·javascript·vue.js
dly_blog20 小时前
Composition API 设计思想(第11节)
开发语言·前端·javascript
Jagger_20 小时前
超实用的AI绘图提示词:快速绘制树状架构图
前端·后端
墨白曦煜20 小时前
深度解密:Redis RDB 持久化策略——滑动窗口还是累积计数?
javascript·redis·bootstrap
JosieBook20 小时前
【Vue】06 Vue技术——Vue 中 `el` 与 `data` 的两种写法总结
javascript·vue.js·ecmascript
fengyucaihong_12320 小时前
前端传递list,字符串
前端
颜酱20 小时前
用填充表格法-理解01背包及其变体问题
前端·javascript·算法
爱分享的鱼鱼20 小时前
Vue3+ElementUI树形菜单:构建层次化用户界面
前端
JS_GGbond21 小时前
JavaScript的new魔法:从零创造一个对象的奇妙旅程
前端