vue实战:路由监听

一、场景:在页面刷新后,仍然定位到之前菜单栏选中的按钮,即之前的菜单栏按钮仍为激活状态,而非重新定位到第一个默认激活状态的菜单栏按钮。

二、1、在element-ui组件库中,有一个名字为NavMenu导航菜单的组件,<el-menu>标签上有一个属性default-active,其值表明当前激活的菜单按钮对应的组件路由,也可以去掉这个属性,但刷新页面后菜单栏激活的按钮变为第一个,加上这个属性后页面刷新后仍然是之前的菜单按钮为高亮状态。

2、菜单栏的按钮很多,所以default-active的值不是静态的,这里给一个js对象,逻辑里给这个对象动态赋值为当前组件的路由,即每次刷新页面后默认激活的按钮对应的仍是当前路由对应的组件。

3、default-active=“activeMenu” // 名字可以随便取

4、data () { // 页面的初始化数据
                 return {
                    activeMenu: ‘/home/index‘, // 值为首页组件路由,这里是固定的,当路由发生变化时,要改变activeMenu的值为当前路由。
                }
            },

5、watch: { // 路由监听:监听路由的变化,从而做出相应操作
                 $route: {
                     immediate: true, // 一旦监听到路由的变化立即执行
                     handler(to,from) { // 回调函数,两个参数,to:当前的组件,from:上一个组件
                        this.activeMenu = to.path // 给activeMenu重新赋值为当前组件的路由地址
                      }
               }
           }

三、路由基础回顾:

1、route:它是一条路由,根据不同的地址展示不同的内容

2、routes:它是一组路由

3、router:是一个机制,它来管理路由

原文地址:https://www.cnblogs.com/shidingzhang/p/11620258.html

时间: 2024-08-04 23:24:13

vue实战:路由监听的相关文章

关于vue中滚动监听失效问题

在vue项目中, 监听window滚动失效;并且document.body.scrollTop一直是0的情况! 查找了许多资料;并没有找到合理的解决方案; 最中发现,在index.html设置了html,body的宽高设置成了100%; 这样会造成window.onscroll监听不到正确的滚出高度(恒为0); 不和你们多bb:解决方案: 将html,body的height设置为auto;即可解决!!

vue浏览器返回监听

具体步骤如下: 1.挂载完成后,判断浏览器是否支持popstate mounted(){ if (window.history && window.history.pushState) { history.pushState(null, null, document.URL); window.addEventListener('popstate', this.goBack, false); } }, 2.页面销毁时,取消监听.否则其他vue路由页面也会被监听 destroyed(){ wi

vue.js 组件监听

一.在通过点击事件触发的子组件中: addCart(event) { if (!event._constructed) { return; } if (!this.food.count) { Vue.set(this.food, 'count', 1); } else { this.food.count++; } this.$emit('cartadd', event.target) },// cartcontrol.vue组件 二.在父组件中 <div class="cartcontro

Vue数据的监听

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta http-equiv="x-ua-compatible" content="IE=edge"> 6 <meta name="viewport" content="width=d

vue 父组件监听子组件生命周期

1.方法一 使用$on和$emit // Parent.vue <Child @mounted="doSomething"/> // Child.vue mounted() { this.$emit("mounted"); } 2.使用hook // Parent.vue <Child @hook:mounted="doSomething" ></Child> doSomething() { console.l

vue 前端处理监听关键字搜索

根据组件的业务需要,有时候搜索是把关键字返回给后台,后台处理后再把数据返回给前端渲染(多次请求服务器):有时候是前端把页面的数据全部获取下来,前端处理关键字的搜索(影响页面加载) 我这个文章是介绍第二种情况,主要是要先了解es6的filter()和includes() filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素.不会对空数组进行检测.不会改变原始数组. array.filter(function(currentValue,index,arr),

VUE的watch监听对象

因为普通监听对象时,其实监听的该对象存放的堆地址,只有声明关键子字(deep: true)才能监听整个对象中所有属性变化: 当然如果监听的对象只有一两个属性,也可以直接分别监听其属性: //声明对象 data() { return { obj: { name: '黄国华' } } }, watch: { obj: { handler: function(newVal, oldVal) { console.log(newVal, oldVal); //因为对象为引用类型数据,所以新旧值其实是同一个

vue 在一个页面监听、定时用了之后要销毁,不然在其他页面会报错

1.在一个页面监听.定时用了之后要销毁 2.或者在监听.定时的运行代码,加判断限制 销毁: 加判断: 原文地址:https://www.cnblogs.com/XUYIYUAN/p/12368672.html

vue watch属性监听对象变化。

有时候要监听对象的变化. 我一般用来做一堆input 表单里面条件是否达到,然后按钮的颜色变化. data: { return: { form: { name: '', tel: '', product_value: [], // 产品数组第一个是第一级,第二个是第二级. product_label: '', //产品选择选择对应的文字 xinghao_value: '', // 型号的值 xinghao_label: '', // 型号的名字 guige_value: '', // 规格的值