Vue和Vuetify中的router-link混淆问题

41
如何使用预定义的模板来使用vue-router:
在我的items对象中,我已经添加了一个链接。 https://vuetifyjs.com/examples/layouts/google-contacts
 items: 
[{ icon: 'dashboard' text: 'Home', link: '/'},

{ icon: 'dashboard' text: 'Account', link: '/account'},

我不确定应该把 router-link 组件放在哪里。

4个回答

136

v-list-tilev-btnv-card都扩展了router-link,因此您可以直接在这些组件上使用任何router-link属性。

在您的情况下,您只需要使用<v-list-tile :to="item.link">即可。


7
我们可以在哪里找到关于这个的文档? - K. Waite
它似乎无法与params对象一起使用,我是否遗漏了什么?<v-list-tile @click="" :to="{path: '/settings', params: {jumpTo: 'verification'}}">this.$route.params上返回空对象。 - devman
2
我发现它实际上不适用于“路径”,只适用于“名称”(如果我没记错的话)。 - devman

11

我遇到了同样的问题,我是这样解决的:

<v-list-item v-else :key="item.text" link>
<!-- to -->
<v-list-item v-else :key="item.text" :to="item.link" link>


<v-list-item v-for="(child, i) in item.children" :key="i" link>
<!-- to -->
<v-list-item v-for="(child, i) in item.children" :key="i" :to="child.link" link>


JS

{ icon: "mdi-history", text: "Recientes", link: "/" },

不要忘记在容器中放置<router-view />

    <v-content>
      <v-container class="fill-height" fluid>
        <router-view />
      </v-container>
    </v-content>

谢谢。我知道有一种简单的方法可以做到这一点。 - Mel

1
一个例子:
<template>
  <v-navigation-drawer
    app
    clipped
    permanent
    expand-on-hover
  >
    <v-list>
      <v-list-item class="px-2">
        <v-list-item-avatar>
          <v-img src="https://randomuser.me/api/portraits/women/85.jpg"></v-img>
        </v-list-item-avatar>
      </v-list-item>

      <v-list-item link>
        <v-list-item-content>
          <v-list-item-title class="title">Sandra Adams</v-list-item-title>
          <v-list-item-subtitle>sandra_a88@gmail.com</v-list-item-subtitle>
        </v-list-item-content>
      </v-list-item>
    </v-list>

    <v-divider></v-divider>

    <v-list
      nav
      dense
    >
      <v-list-item v-for="(item, i) in items" :key="i" :to="item.link" link>
        <v-list-item-icon>
          <v-icon>{{item.icon}}</v-icon>
        </v-list-item-icon>
        <v-list-item-title>{{item.text}}</v-list-item-title>
      </v-list-item>
    </v-list>
  </v-navigation-drawer>
</template>

<script>
export default {
  name: 'MenuDrawer',

  data: () => ({
    items: [
      {
        icon: 'mdi-folder',
        text: 'Home',
        link: '/',
      },
      {
        icon: 'mdi-account-multiple',
        text: 'Starred',
        link: 'https://github.com/vuetifyjs/vuetify',
      },
      {
        icon: 'mdi-star',
        text: 'About',
        link: '/about',
      },
    ],
  }),
};
</script>

0
我之前有一个类似的任务需要完成,我是通过以下方式实现的。 请查看下面的代码。
    <v-list-item v-for="([icon, text, link], i) in items" 
     :key="i" 
     link 
      @click="$vuetify.goTo(link)" >

      <v-list-item-icon class="justify-center">
        <v-icon>{{ icon }}</v-icon>
      </v-list-item-icon>
      <v-list-item-content>
        <v-list-item-title class="subtitile-1">{{
          text
        }}</v-list-item-title>
      </v-list-item-content>
    </v-list-item>

根据文档,如果我们在项目中指定link属性,则会将其视为href以执行导航。 然后,您可以使用click函数并在其中传递参数链接。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接