javascript - 如何根据vue.js中的category id和post category id的匹配来过滤类别?
问题描述
我正在使用 vue.js 和 node.js 开发一个博客网站。我分别创建了类别和产品集合[模型],并在产品模式中引用了该类别。首先,我需要按类别名称过滤帖子。
这里我添加主页代码。当我点击类别和搜索词时,帖子没有停留在页面上,它正在重置功能。它正在调用reset post方法。如果我删除该方法,它只会卡在过滤后的帖子中,而不会显示其他过滤后的内容。如何解决这个过滤帖子、搜索帖子和重置帖子?
<template>
<v-container>
<v-app id="inspire">
<v-app-bar app flat dark>
<v-container class="py-0 fill-height">
<h1>TechBlog</h1>
<v-spacer></v-spacer>
<v-btn v-for="(item, i) in items" :key="i" :to="item.link" text>
{{ item.title }}
</v-btn>
<v-spacer></v-spacer>
<Search :searchPosts="searchPosts" />
</v-container>
</v-app-bar>
<v-main class="top">
<router-view></router-view>
</v-main>
</v-app>
<v-container id="container">
<div class="half">
<Filters :filterPosts="filterPosts" />
</div>
<div>
<Posts :posts="posts" />
</div>
</v-container>
</v-container>
</template>
<script>
import API from '../../api'
import NavBar from '@/components/Client/NavBar.vue'
import Filters from '@/components/Client/Filters.vue'
import Posts from '@/components/Client/Posts.vue'
import Search from '@/components/Client/Search.vue'
import axios from 'axios'
export default {
name: 'Home',
components: {
NavBar,
Filters,
Posts,
Search,
},
data() {
return {
posts: [],
searchterm: '',
links: ['Home', 'About'],
items: [
{title: 'Home', link: '/'},
{title: 'About', link: '/aboutus'},
],
}
},
async created() {
this.posts = await API.getAllPost()
},
// computed: {
// filterednames: function() {
// return this.posts.filter((post) => {
// return post.title.toLowerCase().match(this.searchterm.toLowerCase())
// })
// },
// },
methods: {
filterPosts(catName) {
this.resetPosts()
if (catName !== 'All') {
this.posts = this.posts.filter((post) => {
return post.category === catName
})
}
},
searchPosts(searchterm) {
this.resetPosts()
this.posts = this.posts.filter((post) => {
return post.title.toLowerCase().includes(searchterm.toLowerCase())
})
},
resetPosts() {
axios.get(`/api/post`).then((response) => {
this.posts = response.data
})
},
},
}
</script>
<style>
main.v-main {
margin-top: -650px;
}
.bloglist {
margin-bottom: 20px;
}
.half {
width: 10%;
}
#container {
display: flex;
margin: 20px;
}
</style>
解决方案
推荐阅读
- php - 如何合并具有相同键的多个数组?
- jquery - JQUERY Loop 将所有内容转储到具有 .course 类的第一个 div
- java - JavaDocs 生成是否可以限制特定的属性/字段?
- python - 如何访问一个 div 中的特定链接?
- google-apps-script - 如何从使用 urlfetchapp 函数在谷歌应用程序脚本中解析的页面中获取元素byid()或 getelementbyclassname()?
- javascript - 在 Highcharts 热图中设置行和列之间的特定间距
- python - Python BeautifulSoup - 如何以“线性”顺序从 http/xml 标签中提取文本
- python-3.x - 使用协议缓冲区序列化字节 Python3
- saxon - 使用 Saxon 9.6 HE 库进行 xslt 转换后,JVM 堆保存内存密集型转换对象
- gremlin - Gremlin - 从属性值的压缩列表中过滤边缘