【问题标题】:Vue Router Linking Children from ChildrenVue路由器从孩子链接孩子
【发布时间】:2018-02-15 15:13:13
【问题描述】:

我目前正在尝试让这个东西与 Vue Router 一起工作。

目标是: 如果单击 Nav#1,将出现一个包含另一个 Router-Link 且预选了 SubNav#1 的组件。

我可以让它工作的方式是,如果您单击 Nav#1,则会出现带有 SubNav#1 的组件和一个已经活动的类。问题是 Nav#1 中的活动类已被删除,无法导航到 Nav#2 或 N#3。如果我从 Nav#2 或 #3 单击 Router-Link,则不会发生任何事情...

routes.js:

{ path: '/app', component: App,
    children: [
      { path: 'Nav#1', component: Nav#1_Content,
        children: [
          { path: 'SubNav#1', component: SubNav#1_Content},
          { path: 'SubNav#2', component: SubNav#2_Content}
        ]},
      { path: 'Nav#2', component: Nav#2_Content},
      { path: 'Nav#3', component: Nav#3_Content},
    ]}

+ 在新的 VueRouter 实例中自定义 linkActiveClass。

导航组件:

<router-link to="Nav#1/SubNav#1">Nav #1</router-link>
<router-link to="Nav#2">Nav #2</router-link>
<router-link to="Nav#3">Nav #3</router-link>

Nav#1_Content 组件:

<template>
  <div>
   <nav>
     <router-link to="SubNav#1" tag="div">SubNav#1</router-link>
     <router-link to="SubNav#2" tag="div">SubNav#2</router-link>
   </nav>
   <router-view></router-view>
  </div>
</template>

【问题讨论】:

  • 我认为 Nav#1 组件中的路由器链接应该有to="Nav#1/SubNav#1"to="Nav#1/SubNav#2"
  • 很遗憾没有。如果我应用这个,就没有任何效果了。

标签: javascript css routing vue.js vue-router


【解决方案1】:

当您在 &lt;router-link&gt; 标记上为 to 属性指定值时,您正在指定要前往的路线的确切路径。

由于您的所有示例路径都在 /app 根路径下,我不确定您是如何让这些链接正常工作的。

也就是说,您需要去掉路由路径定义中的 # 标志。在提供 Vue Router 的路径时,它会删除 # 符号之后的所有内容并将其保存为 $route.hash 值。

因此,在 to 属性中为您的 &lt;router-link&gt; 标签使用完整路径名,并删除 # 符号。

Here's a working fiddle.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-28
    • 2018-11-26
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 2020-04-14
    • 2018-11-24
    相关资源
    最近更新 更多