Files
zhdiary/packages/nuxt/pages/blog.vue
T
2020-12-16 05:00:20 +07:00

41 lines
882 B
Vue

<template>
<p v-if="$fetchState.pending"></p>
<p v-else-if="$fetchState.error">
An error occurred {{ $fetchState.error.message }}
</p>
<p v-else-if="!posts.length">No posts found.</p>
<post-query v-else :posts="posts" :count="count" />
</template>
<script lang="ts">
import { Vue, Component } from 'nuxt-property-decorator'
import { api } from '~/assets/global'
@Component<BlogPage>({
watch: {
'$route.query.q': '$fetch',
'$route.query.page': '$fetch',
},
async fetch() {
const { result, count, error } = await api('/api/q', {
params: {
q: this.$route.query.q,
page: this.$route.query.page,
},
})
if (error) {
this.$nuxt.error(error)
return
}
this.posts = result
this.count = count
},
})
export default class BlogPage extends Vue {
posts: IPostTeaser[] = []
count = 0
}
</script>