在 vue.js 路由器链接中添加下拉菜单

JF0*_*001 1 node.js vue.js vue-router

我创建了一个 vue.js 路由器,并使用后面找到的结构插入在数组中找到的链接。这会水平显示链接。但是,我想插入下拉菜单,而不是简单的链接。可以使用这个或类似的结构以某种方式完成吗?

<nav style="text-align: right">
  <router-link class="spacing" v-for="routes in links"
  v-bind:key="routes.id"
  :to="`${routes.page}`">{{routes.text}}</router-link>
</nav>

      links: [
    {
      id: 0,
      text: 'Buy',
      page: '/Buy'
    },
    {
      id: 1,
      text: 'Sale',
      page: '/Sale'
    },
    {
      id: 2,
      text: 'Transactions',
      page: '/Transactions'
    },
    {
      id: 3,
      text: 'Help',
      page: '/Help'
    }
  ]
Run Code Online (Sandbox Code Playgroud)

Joe*_*ton 6

是的,有几种方法可以做到这一点,尽管您必须循环不同于 的东西<router-link>,因为该组件呈现一个<a>标签。

我会首先调整您的 HTML 以允许您想要的下拉交互,无论是基于悬停还是基于单击,然后更改您的数据结构和循环以支持它。

我可能会做这样的事情:

<nav style="text-align: right">

  <div
    class="nav-item"
    v-for="link in links" // Move loop to container of shown link and it's dropdown markup
  >
    <router-link
      :key="link.id"
      :to="`${link.page}`"
    >
      {{ link.text }}
    </router-link>

    <div class="nav-item-drawer">
      <router-link
        v-for="subLink in link.subLinks"
        :key="subLink.id"
        :to="`${subLink.page}`"
      >
        {{ subLink.text }}
      </router-link>
    </div>

  </div>

</nav>
Run Code Online (Sandbox Code Playgroud)

具有以下数据结构:

  links: [
    {
      id: 0,
      text: 'Buy',
      page: '/Buy',
      subLinks: [
        {
          id: 0,
          text: 'Buy Sublink 1',
          page: '/Buy-more'
        },
        {
          id: 1,
          text: 'Buy Sublink 2',
          page: '/Buy-less'
        },
      ]
    },
    {
      id: 1,
      text: 'Sale',
      page: '/Sale'
    },
    //...
  ]
Run Code Online (Sandbox Code Playgroud)