Vue+element ui之侧边栏导航效果优化

昨天在我个人写的一个vue项目中,侧边栏导航遇到了一个优化方面的小难题。

问题描述:
用户进入后台管理首页,通过点击导航栏加载路由组件,在子组件内有面包屑导航。通过面包屑导航,点击回到首页时,侧边栏默认选中的项目没有恢复默认值。

问题分析:
在项目中,Home.vue文件里设置了

 data() {
    return {
      // 被激活的链接地址
      activePath: '',
      // 展开的选项栏
      openeds:['']
    }
  },
  methods: {
  	// 保存链接激活状态
    saceNacstate(activePath) {
      window.sessionStorage.setItem('activePath', activePath)
      this.activePath = activePath
    }
  }

但是在Home.vue 中加载出来的页面没有对 activePath 属性的修改。
在这里我选择了采用修改sessionStorage里的activePath值。

在修改activePath值的时候,出现了一个问题。成功修改activePath值后,但是在Hmoe.vue内并不能实时获取到activePath的值。

经过查询一些资料,整理出来了一个办法。
在main.js内实时监控sessionStorage内的值。

具体代码如下:

//main.js 实时监听session的值 start
Vue.prototype.resetSetItem = function (key, newVal) {
    if (key == 'activePath') {
      // 创建一个StorageEvent事件
      var newStorageEvent = document.createEvent('StorageEvent')
      const storage = {
        setItem: function(k, val) {
          sessionStorage.setItem(k, val)
          // 初始化创建的事件
          newStorageEvent.initStorageEvent(
            'setItem',
            false,
            false,
            k,
            null,
            val,
            null,
            null
          )
          // 派发对象
          window.dispatchEvent(newStorageEvent)
        }
      }
      return storage.setItem(key, newVal)
    }
 }
//main.js 实时监听session的值 end

**

在main.js内设置了实时监控后,获取sessionStorage值的方法也做出了相应的改变。

**
Home.vue内代码如下:

created() {
    // this.activePath = window.sessionStorage.getItem('activePath')
    window.addEventListener('setItem', () => {
      var val = sessionStorage.getItem('activePath')
      this.activePath=val
      // 把侧边栏菜单的展开栏对应的数组清空,实现菜单栏折叠
      this.openeds=['']
      console.log('sdsd',val)
    })
  },
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值