Можно ли с помощью Vue.JS расширить router-link или привязать к нему событие, чтобы для определенного типа ссылки выполнялось другое действие?
Что я хотел бы сделать, так это указать некоторые ссылки в моем приложении для всплывающих вкладок, а другие - нет; например
<router-link>no tab</router-link>
<router-link-tab>router view is updated and a tab is pushed</router-link-tab>
Я хотел бы избежать привязки события к beforeRoute и проверки URL-адресов маршрута, но понимаю, что это может быть единственным путем вперед.
Это должно работать во всем приложении Vue, как это делает router-link, и не будет содержаться только в одном компоненте.
Я иду в этом назад? Будут ли подводные камни в определении пользовательского компонента, который запускает новую вкладку и вызывает router.push
, как здесь? Использование RouterLink только для выделения активных и т. д.?
Vue.component('router-link-tab', {
template: `<router-link :to="to" @click.prevent="click">
<slot></slot>
</router-link>
`,
props: {
to: [String, Object],
},
methods:{
click: function () {
console.log(this.to);
this.$router.push(to);
}
}
});