Я хочу провести l oop через массив объектов, и когда я нажимаю на элемент, я хочу отобразить страницу, заполненную данными из другого компонента.
Вот мой маршрутизатор. js
{
path: '/artists',
component: () => import('../views/Artists/ArtistsStart.vue'),
children: [
{
path: '',
component: () => import('../views/Artists/Artists.vue')
},
{
path: ':name',
component: () => import('../views/Artists/Artist.vue')
}
]
}
ArtistsStart.vue
имеет только <router-view>
и анимацию перехода, поэтому я не думаю, что это важно
Artists.vue
<template>
<div v-for="(artist, index) in artists" :key="index" @click="artistLink(artist)">
{{artist.name}}
</div>
</template>
<script>
export default {
data() {
return {
artists: [{
name: 'artist 1',
route: 'artist1',
text: 'lorem ipsum',
imageUrl: ''
},
{
name: 'artist 2',
route: 'artist2',
text: 'lorem ipsum',
imageUrl: ''
}
]
}
},
methods: {
artistLink(artist) {
this.$router.push(`/artists/${artist.route}`);
}
}
}
</script>
Я не сделал t <router-link>
, потому что я не хочу передавать текст и другие данные через URL
Artist.vue
<template>
<div>
<div>
{{name}}
</div>
<div>
{{text}}
</div>
</div>
</template>
<script>
export default {
data() {
return {
name: this.$route.params.name,
text: this.$route.params.text
}
}
}
</script>
Я могу отображать только имя исполнителя в Artist.vue
стр.