Skip to content

Commit f889eba

Browse files
author
luft.liu
committed
Commit Code-Pop#1:
Create EventDetails component Add new API call to fetch single event by id Add new EventDetails component to routes Make EventCard clickable with router-link
1 parent 3d4eefd commit f889eba

File tree

5 files changed

+123
-87
lines changed

5 files changed

+123
-87
lines changed

package-lock.json

Lines changed: 79 additions & 83 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/components/EventCard.vue

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
<template>
2-
<div class="event-card">
3-
<span>@{{ event.time }} on {{ event.date }}</span>
4-
<h4>{{ event.title }}</h4>
5-
</div>
2+
<router-link to="/event/123">
3+
<div class="event-card">
4+
<span>@{{ event.time }} on {{ event.date }}</span>
5+
<h4>{{ event.title }}</h4>
6+
</div>
7+
</router-link>
68
</template>
79

810
<script>

src/router/index.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { createRouter, createWebHistory } from 'vue-router'
22
import EventList from '@/views/EventList.vue'
3+
import EventDetails from '@/views/EventDetails.vue'
34
import About from '@/views/About.vue'
45

56
const routes = [
@@ -8,6 +9,11 @@ const routes = [
89
name: 'EventList',
910
component: EventList
1011
},
12+
{
13+
path: '/event/123',
14+
name: 'EventDetails',
15+
component: EventDetails
16+
},
1117
{
1218
path: '/about',
1319
name: 'About',

src/services/EventService.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,8 @@ const apiClient = axios.create({
1212
export default {
1313
getEvents() {
1414
return apiClient.get('/events')
15+
},
16+
getEvent(id) {
17+
return apiClient.get('/events/' + id)
1518
}
1619
}

src/views/EventDetails.vue

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<template>
2+
<div>
3+
<h1>{{ event.title }}</h1>
4+
<p>{{ event.time }} on {{ event.date }} @ {{ event.location }}</p>
5+
<p>{{ event.description }}</p>
6+
</div>
7+
</template>
8+
9+
<script>
10+
import EventService from '@/services/EventService.js'
11+
export default {
12+
data() {
13+
return {
14+
event: null,
15+
id: 123
16+
}
17+
},
18+
created() {
19+
// fetch event by id() and set local data
20+
EventService.getEvent(this.id)
21+
.then(response => {
22+
this.event = response.data
23+
})
24+
.catch(error => {
25+
console.log(error)
26+
})
27+
}
28+
}
29+
</script>

0 commit comments

Comments
 (0)