<template> <div> <h3>搜索列表</h3> <input type="text" placeholder="请输入要搜索的名字" v-model="searchName"> <ul> <li v-for="(person,index) in fileterPersons" :key="personsKeys[index]"> {{personsKeys[index]}}-- {{person.name}}-- {{person.age}}-- {{person.sex}}-- </li> </ul> </div> </template> <script> import shortid from 'shortid' export default{ name:"list", data(){ return { searchName:'', persons:[ {name:'张三',age:18,sex:'男'}, {name:'李四2',age:128,sex:'男'}, {name:'王五',age:138,sex:'男'}, {name:'赵六',age:148,sex:'男'}, {name:'田七',age:158,sex:'男'}, {name:'邢八',age:168,sex:'男'}, {name:'高久',age:178,sex:'男'}, ], personsKeys:[], } }, //生命周期方法 mounted(){ this.personsKeys=this.persons.map(v=>shortid.generate()) }, computed:{ //过滤 fileterPersons(){ //1获取数据 let {searchName,persons}=this; //2取出数组中的数据 let arr=[...persons]; //3.过滤数组 if(searchName.trim()){ arr=persons.filter((p)=>(p.name.indexOf(searchName)!==-1)); } return arr; } } } </script> <style scoped> ul{ list-style: none; } ul li{ padding:3px 0; } </style>
思路:
1.要知道使用计算属性来进行操作,computed