vue iview 导航高亮动态设置方式

目录
  • vue iview导航高亮动态设置
  • vue element导航栏高亮显示问题
    • 问题1
    • 问题2

vue iview导航高亮动态设置

在开发的是时候,路由发生了跳转但是发现导航的没有进行高亮设置,在iview的menu组件中控制高亮的是active-name,现在动态设置active-name 完成高亮

<Menu :active-name="activeName" theme="light" width="auto" :open-names="['2','3','4']">

	<Submenu name="2">
		<template slot="title">
			<Icon type="ios-navigate"></Icon>
			信息查询
		</template>
		<MenuItem name="travel/" to="travel">信息查询</MenuItem>
	</Submenu>
	<Submenu name="3" v-if="is_super">
		<template slot="title">
			<Icon type="ios-keypad"></Icon>
			信息管理
		</template>
		<MenuItem name="TravelManage" to='TravelManage'>信息管理</MenuItem>
	</Submenu>
	<Submenu name="4">
		<template slot="title">
			<Icon type="ios-contact"></Icon>
			个人信息
		</template>
		<MenuItem name="UserInform" to='UserInform'>个人资料</MenuItem>

	</Submenu>
</Menu>
export default {
	name: '',
	data() {
		return {
			activeName: this.$router.path,
		}
	},
	methods:{
		 menuList(){  // 这个方法里定义好,高亮和路由
			let path = this.$route.matched[1].path
			this.activeName=path.substr(1)
        }
	},	

	mounted() {
		this.menuList()
	}
}

vue element导航栏高亮显示问题

用导航菜单时遇到的一些问题:点击打开官网例子

问题1

页面强制刷新,按F5时,页面如果没有好好设置的话,导航栏默认叠起来,而且无高亮显示;刷新后导航栏显示和之前不一致,如图所示

解决:

html关键代码设置 :default-active="defaultUrl"

这儿的原理就是defaultUrl跟#/后面的一致,也就是说跟router.js中的path一致才行(router.js见后文)

window.location.href.split('/#')[1] 获取的是"http://localhost:8080/#/search-contact/1"中的"/search-contact/1"

这样设置后,无论如何刷新页面,页面都会高亮显示当前url

问题2

点击浏览器前进后退按钮导致高亮显示不同步,

解决问题关键,和问题一原理一样,当路由变化时,改变默认显示高亮的值

    //监听路由变化
    watch: {
      '$route':'getPath'
    },
    methods: {
      getPath(){
        this.defaultUrl = this.$route.path;
      }
    },

补充:

以上,div和js文件在设置菜单栏的menu.vue文件下。

router.js里面这样设置

import Vue from 'vue';
import Router from 'vue-router';
Vue.use(Router);

import Home from './views/home';
import SearchProperty from './views/search/search-property';
import SearchListing from './views/search/search-listing';
import SearchContact from './views/search/search-contact';
import SearchSchool from './views/search/search-school';

export default new Router({
  routes: [
    {name: 'home', path: '/', component: Home},
    {name: 'search-property', path: '/search-property/:pageNum', component: SearchProperty},
    {name: 'search-contact', path: '/search-contact/:pageNum', component: SearchContact},
    {name: 'search-listing', path: '/search-listing/:pageNum', component: SearchListing},
    {name: 'search-school', path: '/search-school/:pageNum', component: SearchSchool},

  ],
});

补充:这是目前发现最简单的一种方法

<el-menu router :default-active="$route.path">
</el-menu>

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • vue iview实现动态路由和权限验证功能

    github上关于vue动态添加路由的例子很多,本项目参考了部分项目后,在iview框架基础上完成了动态路由的动态添加和菜单刷新.为了帮助其他需要的朋友,现分享出实现逻辑,欢迎一起交流学习. Github地址 iview-dynamicRouter 实现目标 客户端从服务端拿到路由和权限数据后,刷新项目的路由和菜单列表,并进行权限控制. 项目基础 基础框架: iview组件库官方模板项目 iview-admin 的template分支项目,此项目为 iview-admin 的基础框架代码.项目地

  • vue+iview框架实现左侧动态菜单功能的示例代码

    最近在使用vue-cli3配合iview框架搭建新的项目中用到了iview中的menu菜单,按照官网写法固定不太好,因为一般项目都是从后端动态获取菜单列表,所以我们需要将官网代码稍作修改,代码如下: 注意事项: [1]菜单高亮部分动态绑定路由跳转的页面 Menu组件中有一个active-name反映的是当前高亮区域,因此可以动态的绑定active-name来实现高亮显示.前提是需要将MenuItem绑定的name也设置成页面路由的name [2]动态获取菜单数据,需要更新菜单 this.$nex

  • vue iview的菜单组件Mune 点击不高亮的解决方案

    前言: 在项目中,我用到了vue +iview + vue-router 开发: 然后导航条就使用了iview的Menu组件,结果发觉导航条的内容点击一次之后不会显示高亮样式,而是先跳转了,我再点击一次,才会高亮显示. 在看了vue-router的文档之后,发觉有一个很好用的东西,就是router-link的属性: active-class 和 exact. 为什么要使用router-link? 官网上说明了这几点好处: 组件支持用户在具有路由功能的应用中(点击)导航. 通过 to 属性指定目标

  • vue iview 导航高亮动态设置方式

    目录 vue iview导航高亮动态设置 vue element导航栏高亮显示问题 问题1 问题2 vue iview导航高亮动态设置 在开发的是时候,路由发生了跳转但是发现导航的没有进行高亮设置,在iview的menu组件中控制高亮的是active-name,现在动态设置active-name 完成高亮 <Menu :active-name="activeName" theme="light" width="auto" :open-nam

  • iview table高度动态设置方法

    在使用iview table表格组件的时候,由于我的屏幕分辨率比较大,在自己pc机上设置的固定高度很适合,在测试(test)时候发现在别的终端如1368*768的机器上都显示不全,下面就把我的和其他机器上效果图做个对比,如图所示: 一.我的机器 二.别人的机器 三.解决办法 原因就是因为表格高度是固定的,在大分辨率下的屏幕可以显示,小分辨率的屏幕就显示不完全,所以我们需要动态的去设置表格的高度,设置方法如下: 1.iview table的写法: <Table highlight-row bord

  • SpringBoot 任务调度动态设置方式(不用重启服务)

    目录 SpringBoot 任务调度动态设置 1.初始化入口(注解 @PostConstruct) 2.任务调度类 SpringBoot 调度任务 1.首先需要用@EnableScheduling 2.@Scheduled 注解用于标注 一些常用的任务表达式 SpringBoot 任务调度动态设置 1.初始化入口(注解 @PostConstruct) @PostConstruct private void initTimedTask() { //初始化任务调度器cron,可以从数据库中查询到cr

  • vue @ ~ 相对路径 路径别名设置方式

    目录 @ ~ 相对路径 路径别名设置 项目设置src相对路径为@ 第一步 创建vue.config.js文件 第二步 添加代码 @ ~ 相对路径 路径别名设置 ./这是相对路径的意思,同级目录. ../上级目录. @/这是webpack设置的路径别名.在build/webpack.base.conf这个文件里面设置了@具体指的是什么 在build/webpack.base.conf里找到如下 resolve: {     extensions: ['.js', '.vue', '.json'],

  • vue+element导航栏高亮显示的解决方式

    用导航菜单时遇到的一些问题:点击打开官网例子 问题1: 页面强制刷新,按F5时,页面如果没有好好设置的话,导航栏默认叠起来,而且无高亮显示:刷新后导航栏显示和之前不一致,如图所示 解决: html关键代码设置 :default-active="defaultUrl" 这儿的原理就是defaultUrl跟#/后面的一致,也就是说跟router.js中的path一致才行(router.js见后文) window.location.href.split('/#')[1] 获取的是"

  • Vue 动态设置路由参数的案例分析

    在vue中 可以动态设置路由参数: 1.使用this.$router.go(),与js histroy.go() 用法一直,前进1,后退-1,当前页面:0 注意 使用go时 必须是已经有访问历史记录了 案例: <template> <div> <button @click="goht">后退<button> <br/> <button @click="goqj">前进<button>

  • vue头部导航动态点击处理方法

    1:DATA中两个变量, data: { nav:['头条1','头条2'], ins:0,//记录当前点击的INDEX }, 2: <div v-for="(item,index) in nav" :class="index == ins ? 'swiper-slide swiper_active' : 'swiper-slide' " @click="topClick(index)">{{item}}</div> 3:

  • vue项目动态设置页面title及是否缓存页面的问题

    跟传统的页面可以在每个页面分别设置填写对应的页面title,but,vue是单页面应用项目,想设置页面对应的title就不能跟传统方式一样了. 下载 npm install vue-wechat-title --save 在mian.js中引入 //设置title import VueWechatTitle from 'vue-wechat-title' Vue.use(VueWechatTitle) 在router的index.js的路由中加上参数 { path: '/login', comp

随机推荐