vue2实现搜索功能(输入框中有目标数据,如果有,则在页面显示)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<script src="vue.min.js"></script>
<link rel="stylesheet" href="./css/style.css" />
</head>
<body>
<div id="app">
<div class="search-wrapper">
<input type="text" v-model="search" placeholder="请搜索" />
</div>
<div class="wrapper">
<div class="card" v-for="post in filteredList">
<a v-bind:href="post.link" target="_blank">
<img v-bind:src="post.img" />
{{ post.title }}
</a>
</div>
</div>
</div>
<script>
class Post {
constructor(title, link, img) {
this.title = title;
this.link = link;
this.img = img;
}
}
const app = new Vue({
el: "#app",
data: {
search: "",
postList: [
new Post(
"小猫咪",
"https://unsplash.com/s/photos/cat",
"./images/cat.png"
),
new Post(
"小狗狗",
"https://unsplash.com/@joeyc",
"./images/dog.png"
),
new Post(
"北极熊",
"https://unsplash.com/@hansjurgen007",
"./images/bar.png"
),
new Post(
"狮子",
"https://unsplash.com/@hansjurgen007",
"./images/lion.png"
),
new Post(
"小鸟",
"https://unsplash.com/@eugenechystiakov",
"./images/birds.png"
),
new Post(
"狐狸",
"https://unsplash.com/@introspectivedsgn",
"./images/fox.png"
),
],
},
computed: {
filteredList() {
//使用filter过滤数组,通过includes方法查找title中是否包含search的内容
// 核心关键代码如下
return this.postList.filter((item)=>item.title.includes(this.search))
},
}
});
</script>
</body>
</html>