filter过滤函数-案例
分别用计算属性和监视属性来做。
<template>
<div class="Leading">
<h2>人员列表</h2>
<input type="text" placeholder="请输入名字" v-model="keyword"><br>
<!-- 监视属性-->
<ul>
<li v-for="(item,index) in filPersons" :key="index">{{ item.name }}--{{ item.age }}--{{ item.sex }}</li>
</ul>
<!-- 计算属性-->
<ul>
<li v-for="(item,index) in filPerson" :key="index">{{ item.name }}--{{ item.age }}--{{ item.sex }}</li>
</ul>
</div>
</template>
<script>
export default {
name: "FilterTest",
data() {
return {
persons: [
{id: '001', name: '马冬梅', age: 18, sex: '女'},
{id: '002', name: '周冬雨', age: 20, sex: '女'},
{id: '003', name: '周杰伦', age: 19, sex: '男'},
{id: '004', name: '温兆伦', age: 21, sex: '男'},
],
keyword: '',
filPersons: []
}
},
//watch属性
watch: {
keyword: {
immediate: true,//立即计算,返回数组值,不然为空。
handler(val) {//keyworld的值
this.filPersons = this.persons.filter((item) => {
//返回计算所得的数组
return item.name.indexOf(val) !== -1
})
// indexOf()如果不存在返回-1,如果存在返回字符串所在数组位置。 空字符串位于0位
}
}
},
// 计算属性
computed: {
filPerson() {
return this.persons.filter((p)=>{
return p.name.indexOf(this.keyword)!==-1
})
}
}
}
</script>
浙公网安备 33010602011771号