通过vue刷新左侧菜单栏操作


Posted in Javascript onAugust 06, 2020

今天完成了手头任务就想着做点什么,刚好领导让我看看项目左侧菜单栏不刷新的问题,我也是刚刚接触vue,很多东西都还不是很熟练,这也是我的第一篇自己写的博客,感觉还是很兴奋的,我觉得写博客这个习惯要一直养成,不但总结了自己一天的工作所得,而且也是对自己的一种良好习惯的养成。

下面进入正题。

这个是我们html里面的超链接,而我们的点击事件的跳转就是通过这个超链接实现的。

<el-menu-item index="3-1"><a href="#/commodity-list" rel="external nofollow" >

然后我们要创建一个js文件,将我们要跳转的路径导入

import ChannelList from './src/commodity-manage/channel-list/channel-list'

配置路由管理:

const router = new VueRouter({
 routes: [
 {
   path: '/commodity-list',
   name: 'commodity-list',
   component: commodityStorage,
   children: []
  }
]

path:就是我们要跳转的路径

name:跳转文件的名字

component:配置了映射的组件

在html文件中配置了<router-view/>

<router-view :key="key"></router-view>

是用来渲染通过路由映射过来的组件,当路径更改时,<router-view> 中的内容也会发生更改

在js文件中使用computed来进行监听

//每次让路由生成不同的值,用于重新加载组件,达到刷新数据的效果
  computed: {
   key() {
     return this.$route.name !== undefined? this.$route.name +new Date(): this.$route +new Date()
   }
  },

补充知识:vue:路由菜单(element 和 antd)

在 vue 中 使用 UI框架中的菜单,给菜单如何添加路由呢?其中会出现路由样式的问题。请看下面两种UI方法。

注)使用框架的时候注入知道的吧。。。。。防止有些人xxxx,我还是写一下。

通过vue刷新左侧菜单栏操作

场景:使用 elementUI 的 NavMenu 时。

这里请注意:可以不使用 router-link,在 e-menu 上面绑定 route 或者 :route = 'true' ,然后遍历的时候 :index=‘route.path' (:index=‘路径')。

通过vue刷新左侧菜单栏操作

代码

<template>
  <div class="menu">
    <el-menu default-active='activePath'
         router
         @open='handleOpen'
         @close='handleClose'
         background-color='#545c64'
         text-color='#fff'
         active-text-color='#ffd04b' >
      <template v-for="(route,index) in routes">
        <!-- 一级菜单 -->
        <el-menu-item :key='index' v-if='route.children && route.children.length== 1' :index='route.path'>
          <i :class="'el-icon-' + route.meta.icon"></i>
          <span>{{route.meta.title}}</span>
        </el-menu-item>
 
        <!-- 二级菜单 -->
        <el-submenu v-if='route.children && route.children.length > 1' :key='index' :index='route.path'>
          <template slot='title'>
            <i :class="'el-icon-' + route.meta.icon"></i>
            {{route.meta.title}}
          </template>
          <el-menu-item-group v-for='(item, index) in route.children'>
            <el-menu-item :key='index' :index='resolve(route.path, item.path)'>
              <i :class="'el-icon-' + item.meta.icon"></i>
              {{item.meta.title}}
            </el-menu-item>
          </el-menu-item-group>
        </el-submenu>
      </template>
    </el-menu>
  </div>
</template>
 
<script>
 
export default {
  name: 'Menu',
  data() {
   return {
     activePath: this.$router.path,
   }
  },
  computed: { // 计算属性:获取路由
    routes() {
      console.log('test', this.$router)
      console.log('ddd', this.$router.options.routes)
      return this.$router.options.routes
    },
  },
  methods: {
    resolve(p,i){
     return `${p}/${i}`
    },
    handleOpen(key, keyPath) {
      console.log(key, keyPath);
    },
    handleClose(key, keyPath) {
      console.log(key, keyPath);
    }
  },
}
</script>
 
<style lang='less'>
  .el-menu {
    text-align: left;
  }
</style>

场景:使用 antd 的 Menu 时。

这个里面是需要使用route-link做路由跳转的。

通过vue刷新左侧菜单栏操作

代码

<template>
  <div class="menu">
   <a-menu v-model="current" mode="inline" theme="dark">
     <template v-for='route in routes'>
       <!-- 一级菜单 -->
       <a-menu-item v-if='route.children && route.children.length == 1' :key='route.path'>
        <router-link :to='route.path'>
          <a-icon :type='route.meta.icon' />
          {{ route.meta.title }}
        </router-link>
       </a-menu-item>
 
       <!-- 二级菜单 -->
       <a-sub-menu v-else='route.children && route.children.length == 2' key="sub1">
        <span slot="title"><span><a-icon :type='route.meta.icon' />{{ route.meta.title}}</span></span>
        <a-menu-item v-for='item in route.children' :key='item.path'>
          <router-link :to='resolve(route.path,item.path)'>
          <!-- <router-link :to="`${route.path}/${item.path}`"> -->
            <a-icon :type='item.meta.icon' />
            {{ item.meta.title }}
          </router-link>
        </a-menu-item>
       </a-sub-menu>
     </template>
   </a-menu>
  </div>
</template>
 
<script>
 
export default {
  name: 'Menu',
  data() {
   return {
     current: ['/'],
   }
  },
  computed: { // 计算属性:获取路由
    routes() {
      console.log('test', this.$router)
      console.log('ddd', this.$router.options.routes)
      return this.$router.options.routes
    },
  },
  methods:{
    resolve(p,i){
     return `${p}/${i}`
    },
  },
}
</script>

以上这篇通过vue刷新左侧菜单栏操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery ajax执行后台方法
Mar 18 Javascript
javasctipt如何显示几分钟前、几天前等
Apr 30 Javascript
js换图片效果可进行定时操作
Jun 09 Javascript
jQuery 回调函数(callback)的使用和基础
Feb 26 Javascript
JavaScript实现自动生成网页元素功能(按钮、文本等)
Nov 21 Javascript
JavaScript小技巧整理
Dec 30 Javascript
jQuery实现的自定义弹出层效果实例详解
Sep 04 Javascript
jQuery Checkbox 全选 反选的简单实例
Nov 29 Javascript
bootstrap confirmation按钮提示组件使用详解
Aug 22 Javascript
详解vue-cli中模拟数据的两种方法
Jul 03 Javascript
微信小程序实现联动选择器
Feb 15 Javascript
vue v-model的用法解析
Oct 19 Javascript
Vue页面手动刷新,实现导航栏激活项还原到初始状态
Aug 06 #Javascript
浅谈JavaScript中等号、双等号、 三等号的区别
Aug 06 #Javascript
前端开发基础javaScript的六大作用
Aug 06 #Javascript
vue 导航菜单刷新状态不消失,显示对应的路由界面操作
Aug 06 #Javascript
解决vue-router路由拦截造成死循环问题
Aug 05 #Javascript
Vue基于iview table展示图片实现点击放大
Aug 05 #Javascript
vue相同路由跳转强制刷新该路由组件操作
Aug 05 #Javascript
You might like
双料怀旧--SHARP GF515的维护、修理和简单调试
2021/03/02 无线电
刚才在简化php的库,结果发现很多东西
2006/12/31 PHP
php管理nginx虚拟主机shell脚本实例
2014/11/19 PHP
php获取数组元素中头一个数组元素值的实现方法
2014/12/20 PHP
php实现批量上传数据到数据库(.csv格式)的案例
2017/06/18 PHP
javascript 自动填写表单的实现方法
2010/04/09 Javascript
Jquery ui css framework
2010/06/28 Javascript
js导出table到excel同时兼容FF和IE示例
2013/09/03 Javascript
jquery如何扑捉回车键触发的事件
2014/04/24 Javascript
JavaScript动态加载样式表的方法
2015/03/21 Javascript
JavaScript encodeURI 和encodeURIComponent
2015/12/04 Javascript
Vue.js第三天学习笔记(计算属性computed)
2016/12/01 Javascript
jQuery焦点图轮播效果实现方法
2016/12/19 Javascript
ES6中Iterator与for..of..遍历用法分析
2017/03/31 Javascript
关于Vue.nextTick()的正确使用方法浅析
2017/08/25 Javascript
layui实现table加载的示例代码
2018/08/14 Javascript
JavaScript实现移动端弹窗后禁止滚动
2020/05/25 Javascript
python发腾讯微博代码分享
2014/01/10 Python
使用Python脚本来获取Cisco设备信息的示例
2015/05/04 Python
python中threading超线程用法实例分析
2015/05/16 Python
Python实现的自定义多线程多进程类示例
2018/03/23 Python
python训练数据时打乱训练数据与标签的两种方法小结
2018/11/08 Python
利用python实现周期财务统计可视化
2019/08/25 Python
Python 解决火狐浏览器不弹出下载框直接下载的问题
2020/03/09 Python
Python3 利用face_recognition实现人脸识别的方法
2020/03/13 Python
tensorflow使用freeze_graph.py将ckpt转为pb文件的方法
2020/04/22 Python
Python使用Opencv实现边缘检测以及轮廓检测的实现
2020/12/31 Python
工作人员思想汇报
2014/01/09 职场文书
女方回门宴答谢词
2014/01/14 职场文书
店长职务说明书
2014/02/04 职场文书
上课打牌的检讨书
2014/02/15 职场文书
奥林匹克的口号
2014/06/13 职场文书
党支部对转正的意见
2015/06/02 职场文书
2016年优秀少先队辅导员事迹材料
2016/02/26 职场文书
2016个人廉洁自律承诺书
2016/03/25 职场文书
HTML5简单实现添加背景音乐的几种方法
2021/05/12 HTML / CSS