vue父路由默认选中第一个子路由,切换子路由让父路由高亮不会消失

在实际开发中,嵌套路由经常会用到,基本用法也很简单,今天遇到了当前路由下(父路由)在点击它的子路由时,他的(父路由)选中状态消失了

原因是:

1.子路由router-link加了exac精确匹配路由

2.在写路由的时候,父子路由没有严格按照一级/二级来写

嵌套路由中默认选中第一个子路由

{
          path: ‘/dec‘, // 设备中心,主路由
          redirect: ‘/dec/decOverview‘,
          name: ‘decIndex‘,
          component: DecIndex,
          meta: {
            title: ‘设备中心‘
          },
          children: [
            {
              path: ‘/dec/decOverview‘, // 子路由前面一定要加上主路由,在切换的时候还是会匹配主路由,主路由高亮不会消失
              name: ‘decOverview‘,
              component: DecOverview,
              meta: {
                title: ‘设备概览‘
              }
            },
            {
              path: ‘/dec/decUse/onlineRate‘, // 默认的子路由
              name: ‘onlineRate‘,
              component: OnlineRate,
              meta: {
                title: ‘设备在线率‘
              }
            },

  主路由的设置:

<li>
          <router-link class="classify" tag="div" to="/dec" event="click"> exac不要加
            <i class="iconfont sjzx"></i>
            <span>设备中心</span>
          </router-link>
        </li>
        <li>
          <router-link class="classify"  tag="div" to="/user" event="click">
            <i class="iconfont user"></i>
            <span>用户中心</span>
          </router-link>
        </li>

 router-link 作为 vue 中的路由跳转标签,它内置有一个选中的状态,当处于当前路由时,会给 router-link 加一个 router-active-class,即选中状态的 class,同时还提供有一个 exact 属性,当加了 exact 属性的时候表示精确匹配,也就是会精确匹配 Url,所以如果给主路由设置了 exact 属性的话,当处于子路由时,Url 就匹配不到主路由了,那么主路由也就不会处于选中状态。所以解决办法就是不要在主路由和子路由的 router-link 上设置 exact 属性,问题即可解决。 

原文地址:https://www.cnblogs.com/mmzuo-798/p/9492659.html

时间: 2024-08-11 00:51:57

vue父路由默认选中第一个子路由,切换子路由让父路由高亮不会消失的相关文章

getresources()与Spinner取消默认选中第一项

getResource() getResource是在有context的前提下才能使用,在android中常在activity中使用它.普通的类一般无法使用.否则会报空指针异常. Spinner默认选中第一项 取消默认选中第一项的方法: spinner.setSelection(0, true); 注意:

[ jquery 选择器 :nth-last-of-type() ] 选取指定(p)父元素下的从后向前数的指定第一个子元素(无关目标元素在父元素中所处的位置)

选取指定(p)父元素下的从后向前数的指定第一个子元素(无关目标元素在父元素中所处的位置): 实例: <!DOCTYPE html> <html lang='zh-cn'> <head> <title>Insert you title</title> <meta http-equiv='description' content='this is my page'> <meta http-equiv='keywords' conte

Easyui combobox如何默认选中第一项???

以下代码可以实现combobox默认选中第一项,在实际开发中我们可能会用到! // 处理combobox默认选中的问题 <input id="user_type" class="easyui-combobox" name="user_type" data-options=" valueField:'id', textField:'name', url:'<?php echo \Yii::$app->urlManager

ListView控件如何默认选中第一个元素

private void tabControl1_SelectedIndexChanged(object sender, EventArgs e) { if (tabControl1.SelectedIndex == 1&&listView1.Items.Count>0) { //默认选中第一行数据 listView1.Items[0].Selected = true; listView1.Select(); } } 原文地址:https://www.cnblogs.com/shar

easyui tree 默认选中第一个元素

系统采用ajax异步调用后端接口做数据呈现,有个场景就是加载的树形菜单默认选中第一行,网上有人分享的解决方案能实现效果(http://aokunsang.iteye.com/blog/1489204),不过还是沿用自身提供的事件来实现这个需求. onLoadSuccess: function (node, data) { if (data.length > 0) { //找到第一个元素 var n = $('#menuTree').tree('find', data[0].id); //调用选中

ionic中ng-options与默认选中第一项的问题

1. select中动态添加数据时发现一个选项为空,在选中了其他选项时,在点击时发现第一个空选项消失了,所有我们需要设置一个默认的选项: 2. 开始的时候我用的方法: <select class="selectcompany" ng-change="change(routeinfo.UnitCode)" ng-model="routeinfo.UnitCode"> <option ng-repeat="unit in

vue中select默认选中

<div id="app"> <!-- 选择一个 --> <select name="abc" id="" v-model="fruits"> <option value="" >请选择</option> <option value="苹果">苹果</option> <option value=&q

iOS UITableView 修改滚动条颜色 默认选中第一条

//隐藏 self.tableView.showsVerticalScrollIndicator = NO; //修改颜色 self.tableView.indicatorStyle=UIScrollViewIndicatorStyleWhite; //选中0组0行 NSIndexPath *selectedIndexPath = [NSIndexPath indexPathForRow:0 inSection:0]; [self.tableView selectRowAtIndexPath:s

Jquery默认选中单选框radio第一个、选中指定值的单选框

概述 当页面加载时,指定区域的单选框默认选中第一个:用户勾选单选框之后,再次回到页面时,需要选中上次勾选的单选框 JS 选中指定id为"admin-content-task"中的某个radio // 页面隐藏域的值 var platIdVal = $("#platIdVal").val(); // 如果platIdVal为空,说明没有勾选单选框 if(platIdVal==null || platIdVal == ''){ // 默认选中平台单选框的第一个 $(&q