router-link 与 vue 和 vuetify 混淆

Posted

技术标签:

【中文标题】router-link 与 vue 和 vuetify 混淆【英文标题】:router-link with vue and vuetify confusion 【发布时间】:2018-05-15 02:58:40 【问题描述】:

如何在使用预定义模板的情况下使用 vue-router:

https://vuetifyjs.com/examples/layouts/google-contacts

我在我的 items 对象中添加了一个链接

 items: 
[ icon: 'dashboard' text: 'Home', link: '/',

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

我很困惑将路由器链接组件放在哪里。

【问题讨论】:

【参考方案1】:

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

在您的情况下,您可以使用<v-list-tile :to="item.link">

【讨论】:

我们在哪里可以找到这方面的文档? 它似乎不适用于 params 对象,我有什么遗漏吗? <v-list-tile @click="" :to="path: '/settings', params: jumpTo: 'verification'">this.$route.params 上给出空对象 我发现它实际上不适用于path,仅适用于name iirc【参考方案2】:

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

<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: "/" ,

不要忘记将&lt;router-view /&gt; 放入容器中。

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

【讨论】:

谢谢。我知道有一种简单的方法可以做到这一点。【参考方案3】:

一个例子:

<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>

【讨论】:

【参考方案4】:

我有一个类似的任务要完成,我能够通过以下方式完成它。 请参阅下面的代码。

    <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>

根据文档,当我们在项目中指定链接属性时,它将被视为执行导航的 href。 然后就可以利用click函数,在里面传递参数链接了。

【讨论】:

以上是关于router-link 与 vue 和 vuetify 混淆的主要内容,如果未能解决你的问题,请参考以下文章

vue.js 传参 href传参 与router-link传参

vue中路由(router)的path与name传参和接收方式

Vue 默认路由 与路由嵌套

Vue路由实现:router-view和router-link的实现原理

Vue路由实现页面跳转的两种方式(router-link和JS)

如何利用vue组件 动态生成router-link