【发布时间】:2018-01-20 03:37:07
【问题描述】:
我可以在button 标记中包装或包含router-link 标记吗?
当我按下按钮时,我希望它引导我到所需的页面。
【问题讨论】:
-
对于 2019 年和 Vue Router 3.1.0+ 的答案,向下滚动以获取最新答案stackoverflow.com/a/58495529/90674
标签: button vue.js vue-router
我可以在button 标记中包装或包含router-link 标记吗?
当我按下按钮时,我希望它引导我到所需的页面。
【问题讨论】:
标签: button vue.js vue-router
您可以使用tag prop。
<router-link to="/foo" tag="button">foo</router-link>
【讨论】:
虽然这里的答案都很好,但似乎没有一个是最简单的解决方案。经过一些快速研究,似乎使按钮使用 vue-router 的真正最简单的方法是使用 router.push 调用。这可以在 .vue 模板中使用,如下所示:
<button @click="$router.push('about')">Click to Navigate</button>
超级简单干净。我希望其他人觉得这很有用!
来源:https://router.vuejs.org/guide/essentials/navigation.html
【讨论】:
@choasia的回答是正确的。
或者,您可以将button 标签包装在router-link 标签中,如下所示:
<router-link :to="{name: 'myRoute'}">
<button id="myButton" class="foo bar">Go!</button>
</router-link>
这不是很干净,因为您的按钮将位于链接元素 (<a>) 内。但是,优点是您可以完全控制按钮,如果您使用像 Bootstrap 这样的前端框架,这可能是必要的。
说实话,我从来没有在按钮上使用过这种技术。但我经常在 div 上这样做......
【讨论】:
感谢 Wes Winder 的回答,并将其扩展为包含路由参数:
<button @click="$router.push({name: 'about-something', params: { id: 'abc123' },})">Click to Navigate</button>
并重申 Wes 提供的来源:https://router.vuejs.org/guide/essentials/navigation.html
【讨论】:
使用插槽 api Documentation Here
<router-link
to="/about"
v-slot="{href, route, navigate}"
>
<button :href="href" @click="navigate" class='whatever-you-want'>
{{ route.name }}
</button>
</router-link>
如果您认为这不直观/冗长,请投诉over here
@choasia 的回答(使用标签 prop)已被弃用,并且不允许将 props 传递给组件
@Badacadabra 的回答会导致 CSS 出现问题,特别是如果按钮来自库(例如:添加边距或定位)
【讨论】:
现在 (VueJS >= 2.x) 你会这样做:
<router-link tag="button" class="myClass" id="button" :to="place.to.go">Go!</router-link>
【讨论】:
使用方法的路由方法以及路由 1.路由器链接
<router-link to="/login">Login </router-link>
<template> <input type="submit" value="Login" @click="onLogIn" class="btn float-right btn-primary"> </template>
<script>
export default {
name:'auth',
data() {
return {}
},
methods: {
onLogIn() {
this.$router.replace('/dashboard');
}
}
}
【讨论】:
我正在开发 Vue CLI 2,这个对我有用!
<router-link to="/about-creator">
<button>About Creator</button>
</router-link>
【讨论】:
// literal string path
router.push('home')
// object
router.push({ path: 'home' })
// named route
router.push({ name: 'user', params: { userId: '123' } })
// with query, resulting in /register?plan=private
router.push({ path: 'register', query: { plan: 'private' } })
【讨论】:
使用 v-btn 组件,您可以简单地:
<v-btn onclick="location.href='https://www.Google.com'" type="button" class="mb-4">Google</v-btn>
【讨论】:
使用 bootstrap-vue 并在表格行内创建带有 id 的链接的示例:
<b-table :fields="fields" :items="items">
<template v-slot:cell(action)="data">
<router-link :to="`/rounds/${data.item.id}`" v-slot="{ href, route, navigate}">
<b-button :href="href" @click="navigate" color="primary" style="text">{{ data.item.id }}</b-button>
</router-link>
</template>
</b-table>
其中fields 和items 分别是列名和表格内容。
【讨论】: