Vuetify:导航栏在新选项卡中打开特定链接

Posted

技术标签:

【中文标题】Vuetify:导航栏在新选项卡中打开特定链接【英文标题】:Vuetify : Navbar open specific links in new tabs 【发布时间】:2022-01-19 23:24:36 【问题描述】:

我有一个看起来像这样的导航栏组件。

我需要在新标签中打开 2 个菜单选项。

<template>
    <nav>
        <v-app-bar text app color="blue">
            <v-app-bar-nav-icon class="white--text" @click="drawer = !drawer"></v-app-bar-nav-icon>
            <v-app-bar-title class="text-uppercase white--text">
                <!-- <span class="font-weight-light">Vi3</span>
                <span>Global</span> -->
            </v-app-bar-title>
        </v-app-bar>

        <v-navigation-drawer v-model="drawer" app class="grey lighten-1">
            <v-list>
                <v-list-item v-for="link in links" :key="link.text" router :to="link.route">
                    <v-list-item-action>
                        <v-icon> link.icon </v-icon>
                    </v-list-item-action>

                    <v-list-item-content>
                        <v-list-item-title>  link.text  </v-list-item-title>
                    </v-list-item-content>
                </v-list-item>
            </v-list>
        </v-navigation-drawer>
    </nav>
</template>
<script>
export default 
    data() 
        return 
            drawer: true,
            links: [
                 icon: 'dashboard', text: 'Dashboard', route: '/dashboard', newTab: false ,
                 icon: 'leaderboard', text: 'Stats', route: 'https://www.google.com ', newTab: true ,
                 icon: 'qr_code_scanner', text: 'QR Codes', route: '/qr-codes', newTab: false ,
                 icon: 'tungsten', text: 'Campaigns', route: '/Campaigns', newTab: false ,
                 icon: 'link', text: 'URL Groups', route: '/url-groups', newTab: false ,
                 icon: 'settings', text: 'Settings', route: '/settings', newTab: false ,
                 icon: 'support', text: 'Support', route: 'https://youtube.com', newTab: true ,
                 icon: 'exit_to_app', text: 'Logout', route: '/' 
            ]
        
    ,
    methods: 
        created() 
            if (this.link.text == 'Support') 
                console.log('Support')
            
        
    

</script>

如何添加逻辑并捕捉它?

我尝试将 URL 放入其中,它一直在它前面添加 / 导致这个

有什么提示吗?

我试过了

<v-list-item v-for="link in links" :key="link.text" router :to="link.route" target="link.text == 'Support' ? '_blank' : '']">

看起来没那么干净,多余的 / 还在那里.. :(

【问题讨论】:

【参考方案1】:

我不知道您使用的是哪个版本的 vuetify,但在 v-list-item 的文档中,您有 2 个有用的道具:

href -> 在此处使用您的 link.route 变量 target -> 你应该尝试使用值“_blank”(这个值意味着在新标签中打开链接,在 html 中 - 见 here)

关于您尝试过的内容,将其更改为:

<v-list-item v-for="link in links" :key="link.text" :href="link.route" :target="link.newTab ? '_blank' : ''">

【讨论】:

我使用2.4.0,它是目前唯一兼容Vue2的版本。 这个解决方案,不知何故仍将 / 添加到 URL 的开头。 您的回答无效。【参考方案2】:

为了更好地清理模板,我通常在这些情况下创建一个方法。那么你的v-list-item 可能是:

<v-list-item v-for="link in links" :key="link.text" @click="go(link)">

并使用此方法运行:

go(link)
    if(!link.newTab) 
         this.$router.push( path: link.route )
    
    else
         window.open(link.route)
    
,

【讨论】:

我喜欢这个干净的解决方案,但它一直把我送到这个http://localhost:8080/https:/www.google.com .... 它添加了http://localhost:8080/——这是我不想要的。 我认为这与您的vue路由器的配置问题有关。如果您愿意,我们可以在另一个问题中处理它。 我应要求提出了一个新问题。 ***.com/questions/70413536/… 您的回答无效。

以上是关于Vuetify:导航栏在新选项卡中打开特定链接的主要内容,如果未能解决你的问题,请参考以下文章

Datagrid 导航链接在新选项卡中打开

在新选项卡中打开 iframe 源

使 v-data-table 行在新选项卡中打开(vuetify)

捕获“在新选项卡中打开链接”和“在新窗口中打开链接”事件

链接在新选项卡中打开并关注上一个选项卡[重复]

如何在 vue 路由中导航到 Bootstrap-vue 选项卡中的特定选项卡?