javascript - 如何根据 id 在 vue.js 中搜索过滤器
问题描述
我正在制作一个 Vue 项目。它包含一个div
并循环标题和数据。在 div 内部有一个搜索过滤器和以p
标签呈现的内容。p
标签也会循环。
这是代码:
<div>
<div v-for="(item) in data" :key="item.id">
<div>{{item.title}}</div>
<input type="text" v-model="search" />
<div v-for="(content, j) in filteredLists" :key="j">
<p v-for="(con, k) in content" :key="k">{{con}}</p>
</div>
</div>
</div>
这是数据
search: "",
data: [
{
id: 1,
title: "Devsrc",
content: {
id: 1,
details: ["ONE_DEV_EMP1", "ONE_DEV_EMP2"]
}
},
{
id: 2,
title: "Devsrc2",
content: {
id: 2,
details: ["TWO_DEV_EMP1", "TWO_DEV_EMP2"]
}
},
{
id: 3,
title: "Devsrc3",
content: {
id: 3,
details: ["THREE_DEV_EMP1", "THREE_DEV_EMP2"]
}
}
]
计算属性
filteredLists() {
return this.data.map(item => {
return item.content.details.filter(detail => {
return detail.toLowerCase().match(this.search);
})
});
},
我想要做的是只为项目 id == 内容 id 呈现详细信息。
解决方案
filteredLists()
为初学者创建一个方法而不是计算。
<div>
<div v-for="(item) in data" :key="item.id">
<div>{{item.title}}</div>
<input type="text" v-model="search" />
<div v-for="(content, j) in filteredLists(item.id)" :key="j">
<p v-for="(con, k) in content" :key="k">{{con}}</p>
</div>
</div>
</div>
function filteredLists(id) {
let term = this.search.trim().toUpperCase();
let scoped = this.data.filter(item => { return parseInt(item.content.id) === parseInt(id) });
if(term.length > 0) {
return scoped.filter(item => {
return item.content.details.find(seek => seek.match(search));
});
}
return scoped;
}
let search = 'EMP2';
let data = [{
id: 1,
title: "Devsrc",
content: {
id: 1,
details: ["ONE_DEV_EMP1", "ONE_DEV_EMP2"]
}
},
{
id: 2,
title: "Devsrc2",
content: {
id: 2,
details: ["TWO_DEV_EMP1", "TWO_DEV_EMP2"]
}
},
{
id: 3,
title: "Devsrc3",
content: {
id: 3,
details: ["THREE_DEV_EMP1", "THREE_DEV_EMP2"]
}
}
];
function filteredLists(id) {
let term = search.trim().toUpperCase();
let scoped = data.filter(item => { return parseInt(item.content.id) === parseInt(id) });
if(term.length > 0) {
return scoped.filter(item => {
return item.content.details.find(seek => seek.match(search));
});
}
return scoped;
}
console.log(filteredLists(3));
推荐阅读
- c++ - 如何在不创建构造函数的情况下使用私有/受保护成员初始化 POD 结构?
- azure - 要通过语音使用 Azure LUIS,我需要先获取文本吗?
- json - Tabulator - Cell.setValue 为自定义格式化程序创建递归循环,表格不保存数据
- testing - 如何在每个拉取请求中运行特定的测试?
- android - Android 中的 apiclient 是什么?
- windows-subsystem-for-linux - 如何更改适用于 Linux 的 Windows 子系统中的默认目录
- python-3.x - PathCollection'对象没有属性 legend_elements''
- c# - 如何在不打开窗口的情况下运行2个文件c#
- javascript - isElementInViewport 的 JavaScript 测试用例
- python - 如何更正错误“+=:'int'和'str'不支持的操作数类型”