Далее в этом же файле редактирую код из прошлого урока добавив условие search(query) в getPostsOfPage
const pagination = {
getPostsOfPage($content, page, query) {
return $content('blog')
.sortBy('date', 'desc')
.skip(10 * (page - 1))
.limit(10)
.search(query)
.fetch()
},
async getNumberOfPages($content, query) {
return query ? Math.ceil((await $content('blog').search(query).fetch()).length / 10) : Math.ceil((await $content('blog').only([]).fetch()).length / 10)
},
}
getNumberOfPages редактировали чтобы верное количество страниц в пагинации отображалось и при поиске.
Далее пишу кусками код который нужно поменять в коде из прошлого урока.
const query = route.query.search
const [posts, pageCount] = await Promise.all([
pagination.getPostsOfPage($content, page, query),
pagination.getNumberOfPages($content, query),
])
data() {
return {
query: this.$route.query.search,
posts: [],
pageCount: 1
}
}
watch: {
async page() {
this.$router.replace({ path: '/blog', query: { page: this.page } })
this.posts = await pagination.getPostsOfPage(this.$content, this.page, this.query)
this.pageCount = await pagination.getNumberOfPages(this.$content, this.query)
},
async query () {
this.$router.replace({ path: '/blog', query: { search: this.query } })
this.posts = await pagination.getPostsOfPage(this.$content, this.page, this.query)
this.pageCount = await pagination.getNumberOfPages(this.$content, this.query)
this.page = 1
}
}
Опубликовано 8 ноября 2021 г. в категории: NuxtJS
Если Вам необходимо внедрить данную разработку на свой проект, свяжитесь со мной, обсудим цену и срок.