基于布尔值禁用nuxt链接

Sam*_*tha 8 vue-router vuejs2 nuxt.js

我似乎找不到基于数据变量禁用 nuxt 链接的好方法。有人可以提出建议吗?我试过查看文档,但我想不出任何东西。

假设我有一个布尔值叫做disable我想做这样的事情

<nuxt-link :disabled="disable"></nuxt-link>

如果布尔值设置为 false,我基本上只是不希望链接可点击

Yon*_*uan 22

<nuxt-link>本质上<router-link>是 Vue Router

您可以使用eventprop禁用它。

假设您的dataorcomputed属性之一是disabled布尔值:

<nuxt-link :event="disabled ? '' : 'click'"></nuxt-link>
Run Code Online (Sandbox Code Playgroud)

工作示例:

<nuxt-link :event="disabled ? '' : 'click'"></nuxt-link>
Run Code Online (Sandbox Code Playgroud)
const Foo = { template: '<div>foo</div>' }
const Bar = { template: '<div>bar</div>' }
const Baz = { template: '<div>baz</div>' }

const routes = [
  { path: '/foo', component: Foo },
  { path: '/bar', component: Bar },
  { path: '/baz', component: Baz }
]

const router = new VueRouter({
  routes
})

const app = new Vue({
  router,
  data(){
    return { disabled: true }
  }
}).$mount('#app')
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!但实际上,在当前版本的 nuxt 使用的 vue-router v4 中,这个属性已被弃用。以下是修复方法:https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link (4认同)

Sam*_*tha 8

我发现最简单的方法是为禁用的链接创建一个类。我仍然不确定这是否是最好的方法,但它对我有用并且完全符合我的要求。

<nuxt-link to="/search" :class="{ disabled: disabled }"> Search </nuxt-link>
Run Code Online (Sandbox Code Playgroud)

我的 CSS

.disabled {
   color: lightgrey
   pointer-events: none
}
Run Code Online (Sandbox Code Playgroud)

  • 它只是“视觉上”禁用了链接。您仍然可以单击它,它会将您带到“/search”路线 (2认同)
  • 当“pointer-events”设置为“none”时,您不应该能够单击它 (2认同)

GON*_*ONG 5

另一种方法来做到这一点,这是我最喜欢的。是将标记更改为button和使用本机:disabled状态。

<nuxt-link tag="button" :disabled="disable" to="/some/location">Some location</nuxt-link>
Run Code Online (Sandbox Code Playgroud)

然后只需在样式的帮助下将按钮变成链接。