首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在nuxt-link中添加href?

如何在nuxt-link中添加href?
EN

Stack Overflow用户
提问于 2019-05-22 05:39:22
回答 3查看 12.7K关注 0票数 6

我有一系列这样的卡片

代码语言:javascript
复制
<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的一些标记,但没有帮助

EN

回答 3

Stack Overflow用户

发布于 2019-05-23 02:05:55

如果单击<a><a> (它只是<nuxt-link>生成的内容),则实际上是将单击事件发送到这两个元素。这不是一个好的实践(甚至用js停止传播)。只是不要嵌套它

如果它必须放在“卡片”上,也许绝对可以用css来定位它。

尝试如下所示:

代码语言:javascript
复制
<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>

代码语言:javascript
复制
.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
}
票数 2
EN

Stack Overflow用户

发布于 2020-09-21 12:00:47

此时此刻,这似乎对我很有效。

在父组件中

代码语言:javascript
复制
 <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>

在子组件中

代码语言:javascript
复制
<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>
票数 0
EN

Stack Overflow用户

发布于 2021-08-25 00:34:06

它是@ArlanT answer的扩展

它添加了<slot/>,这样您就可以在外部使用它,如下所示。

代码语言:javascript
复制
<hyper-link class="anyClass" :url="myCustomUrl" @click.native="">Here lies my html</hyper-link>
代码语言:javascript
复制
<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>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56246712

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档