【Vue笔记】Vue入门简介_列表过滤和排序(10)
Page content
这一篇整理了列表过滤和排序相关的内容。
实例
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="../js/vue.js" type="text/javascript" charset="uft-8"></script>
</head>
<body>
<div id="app">
<h3>人员列表</h3>
<input type="text" placeholder="请输入名字" v-model="keyword">
<button @click="sortType=2">年龄升序</button>
<button @click="sortType=1">年龄降序</button>
<button @click="sortType=0">原顺序</button>
<ul>
<li v-for="(p,index) of filPersons" :key="p.id">
{{p.name}}-{{p.age}}-{{p.sex}}
</li>
</ul>
</div>
<script type="text/javascript">
Vue.config.productionTip = false;
new Vue({
el: '#app',
data: {
keyword: '',
sortType: 0, // 0 原顺序 1 降序 2 升序
persons: [
{ id: 1, name: '马冬梅', age: 18, sex: '女' },
{ id: 2, name: '周冬雨', age: 15, sex: '女' },
{ id: 3, name: '周杰伦', age: 12, sex: '男' },
{ id: 4, name: '温兆伦', age: 23, sex: '男' }
],
filPersons_watch: []
},
// watch: {
// keyword: {
// immediate: true,
// handler(val) {
// this.filPersons = this.persons.filter((p) => {
// return p.name.includes(val);
// })
// }
// }
// },
// computed:{
// filPersons(){
// return this.persons.filter((p) => {
// return p.name.includes(this.keyword);
// })
// }
// }
computed: {
filPersons() {
let arr = this.persons.filter((p) => {
return p.name.includes(this.keyword);
});
if (this.sortType) {
arr.sort((a, b) => {
return this.sortType === 1 ? b.age - a.age : a.age - b.age;
})
}
return arr;
}
}
});
</script>
</body>
</html>
欢迎大家的意见和交流
email: li_mingxie@163.com