Vue.js router-link 在 firefox 上不工作
Vue.js router-link doesn't work on firefox
我有这个按钮组件:
<button :class="classes" v-on="$listeners" v-bind="$attrs">
<template v-if="to">
<router-link :to="to" class="flex center-v">
<AqIcon :icon="icon" v-if="icon" />
<slot></slot>
</router-link>
</template>
<template v-else>
<AqIcon :icon="icon" v-if="icon" />
<slot></slot>
</template>
</button>
它可以接受一个 :to
道具,在那种情况下我使用路由器 - link 而不是文本。
当我这样使用它时:
<AqButton primary icon="plus" :to="{name:'editUser',params:{id:'new'}}">
Add User
</AqButton>
在 chrome 上它工作正常,但在 FF 上 url 发生变化但它保持在同一页面上。
显然,如果将路由器 link 嵌套在按钮元素下,它就不起作用了。
所以我将组件更改为如下所示:
<template>
<router-link v-if="to" :to="to" :class="classes" v-on="$listeners" v-bind="$attrs">
<AqIcon :icon="icon" v-if="icon" />
<slot></slot>
</router-link>
<button v-else :class="classes" v-on="$listeners" v-bind="$attrs">
<AqIcon :icon="icon" v-if="icon" />
<slot></slot>
</button>
</template>
现在可以使用了。
我有这个按钮组件:
<button :class="classes" v-on="$listeners" v-bind="$attrs">
<template v-if="to">
<router-link :to="to" class="flex center-v">
<AqIcon :icon="icon" v-if="icon" />
<slot></slot>
</router-link>
</template>
<template v-else>
<AqIcon :icon="icon" v-if="icon" />
<slot></slot>
</template>
</button>
它可以接受一个 :to
道具,在那种情况下我使用路由器 - link 而不是文本。
当我这样使用它时:
<AqButton primary icon="plus" :to="{name:'editUser',params:{id:'new'}}">
Add User
</AqButton>
在 chrome 上它工作正常,但在 FF 上 url 发生变化但它保持在同一页面上。
显然,如果将路由器 link 嵌套在按钮元素下,它就不起作用了。
所以我将组件更改为如下所示:
<template>
<router-link v-if="to" :to="to" :class="classes" v-on="$listeners" v-bind="$attrs">
<AqIcon :icon="icon" v-if="icon" />
<slot></slot>
</router-link>
<button v-else :class="classes" v-on="$listeners" v-bind="$attrs">
<AqIcon :icon="icon" v-if="icon" />
<slot></slot>
</button>
</template>
现在可以使用了。