我有一系列这样的卡片
<nuxt-link :to="{ name: 'portfolio-slug', params: { slug: card.slug } }">
<a :href="card.link>Go to href</a>
</nuxt-link>单击带有nuxt的卡片-链接应打开卡片的详细信息页面
单击href应打开外部站点
但是当我点击a-href时,它打开了详细信息而忽略了a-href
尝试使用nuxt-link的一些标记,但没有帮助
发布于 2019-05-23 02:05:55
如果单击<a>中<a> (它只是<nuxt-link>生成的内容),则实际上是将单击事件发送到这两个元素。这不是一个好的实践(甚至用js停止传播)。只是不要嵌套它
如果它必须放在“卡片”上,也许绝对可以用css来定位它。
尝试如下所示:
<div class="card">
<nuxt-link :to="{ name: 'portfolio-slug', params: { slug: card.slug } }">
{{ card.content }}
</nuxt-link>
<a class="card__cta" :href="card.link>Go to href</a>
</div>和
.card {
position: relative;
}
.card__cta {
position: absolute;
bottom: 24px; // depending where you need it, maybe you need top property
right: 24px; // depending where you need it, maybe you need left property
}发布于 2020-09-21 12:00:47
此时此刻,这似乎对我很有效。
在父组件中
<template>
<ul
v-if="loadedTertiaryMenu"
class="nav justify-content-end"
>
<li
v-for="item in loadedTertiaryMenu"
:key="item.id"
class="nav-item"
>
<NavLink
:attributes="item"
/>
</li>
</ul>
</template>
<script>
import NavLink from '@/components/Navigation/NavLink'
export default {
name: 'TheNavigationTertiary',
computed: {
loadedTertiaryMenu() {
return this.$store.getters.loadedTertiaryMenu
}
},
components: {
NavLink
}
}
</script>
<style scoped lang="scss">
</style>在子组件中
<template>
<component
v-bind="linkProps(attributes.path)"
:is="NavLink"
:title="attributes.title"
:class="[ attributes.cssClasses ]"
class="nav-link active"
aria-current="page"
>
{{ attributes.label }}
</component>
</template>
<script>
export default {
name: 'NavLink',
props: {
attributes: {
type: Object,
required: true
}
},
methods: {
linkProps (path) {
if (path.match(/^(http(s)?|ftp):\/\//) || path.target === '_blank') {
return {
is: 'a',
href: path,
target: '_blank',
rel: 'noopener'
}
}
return {
is: 'nuxt-link',
to: path
}
}
}
}
</script>
<style scoped lang="scss">
</style>发布于 2021-08-25 00:34:06
它是@ArlanT answer的扩展
它添加了<slot/>,这样您就可以在外部使用它,如下所示。
<hyper-link class="anyClass" :url="myCustomUrl" @click.native="">Here lies my html</hyper-link><template>
<component
v-bind="linkProps(url)"
:is="'hyperLink'"
>
<slot/>
</component>
</template>
<script>
export default {
props:['url'],
name:'hyperLink',
methods: {
linkProps (path) {
if (path.match(/^(http(s)?|ftp):\/\//) || path.target === '_blank') {
return {
is: 'a',
href: path,
target: '_blank',
rel: 'noopener'
}
}
return {
is: 'nuxt-link',
to: path
}
}
}
};
</script>
<style>
</style>https://stackoverflow.com/questions/56246712
复制相似问题