Button 在vuejs中的按钮中包含路由器链接标记
我可以将Button 在vuejs中的按钮中包含路由器链接标记,button,vue.js,vue-router,Button,Vue.js,Vue Router,我可以将路由器链接标签包装或封装在按钮标签中吗 当我按下按钮时,我希望它将我发送到所需页面 您可以使用 foo @choasia的答案是正确的 或者,您可以将按钮标记包装在路由器链接标记中,如下所示: <router-link :to="{name: 'myRoute'}"> <button id="myButton" class="foo bar">Go!</button> </router-link> 走! 这不是很干净,因为您的按钮
路由器链接
标签包装或封装在按钮
标签中吗
当我按下按钮时,我希望它将我发送到所需页面 您可以使用
foo
@choasia的答案是正确的
或者,您可以将按钮
标记包装在路由器链接
标记中,如下所示:
<router-link :to="{name: 'myRoute'}">
<button id="myButton" class="foo bar">Go!</button>
</router-link>
走!
这不是很干净,因为您的按钮将位于链接元素(
)内。然而,它的优点是您可以完全控制按钮,如果您使用像Bootstrap这样的前端框架,这可能是必要的
老实说,我从来没有在按钮上使用过这种技术。但是我经常在div上这样做…现在(VueJS>=2.x)您可以做:
<router-link tag="button" class="myClass" id="button" :to="place.to.go">Go!</router-link>
开始!
我正在开发Vue CLI 2,而这一款对我来说很管用
<router-link to="/about-creator">
<button>About Creator</button>
</router-link>
关于创造者
虽然这里的答案都很好,但似乎没有一个是最简单的解决方案。经过一些快速的研究,使用vue路由器的最简单方法似乎是使用路由器。按呼叫。这可以在.vue模板中使用,如下所示:
<button @click="$router.push('about')">Click to Navigate</button>
单击导航
超级简单和干净。我希望其他人会觉得这很有用
来源:感谢Wes Winder的回答,并将其扩展到包括路由参数:
<button @click="$router.push({name: 'about-something', params: { id: 'abc123' },})">Click to Navigate</button>
单击导航
并重申Wes提供的源代码:从Vue Router 3.1.0开始,理想的方法是使用slots api
@choasia的回答不允许向组件传递道具
@Badacadabra的回答会导致CSS出现问题,尤其是当按钮来自库时(例如:添加边距或定位)
下面是解决方案如何与slots API一起工作
{{route.name}
路由方法使用方法以及路由
1.路由器链路
登录
当点击该类型的按钮时,调用另一个路由李>
导出默认值{
名称:'auth',
数据(){
返回{}
},
方法:{
onLogIn(){
此.router.replace('/dashboard');
}
}
}
使用引导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>
{{data.item.id}
其中,字段
和项
分别是列名和表内容。此外,可以在其中指定tag=“span”,这样就不会应用样式,从而更好地控制外观:按钮文本,但按钮中的单词(例如,在您的示例中为“Go!”)将有蓝色下划线,这是不漂亮的…即使使用像Bootstrap这样的框架,这也几乎没有必要,因为您可以在router link标记中包含标准属性,如class right,当您使用tag=“button”:是的,谢谢!这是最简单的,而且效果很好。我可以随意设计我的按钮。如果你需要使用参数,你也可以这样做:点击导航我的最佳答案如果该按钮接受一些道具怎么办?如何分发?@andcl我有同样的问题,我在下面发布了答案,GitHub上的Vue路由器团队告诉我:我已经投票了将近一年,但我还是尝试了投票!akkk感谢2019年的againFor answers和Vue Router 3.1.0+,向下滚动以获取最新答案如果您不是在版本>=3.1.0上,插槽中的项目将被忽略,不会显示任何错误。链接到文档:我无法下载3.1.0它说最新版本是3.0.0 rcIt不是Vue 3.1.0,是Vue router 3.1.0。谢谢@Anuga,修复了它
// 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' } })
<script>
export default {
name:'auth',
data() {
return {}
},
methods: {
onLogIn() {
this.$router.replace('/dashboard');
}
}
}
<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>
// 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' } })