vue搜索过滤和排序
vue搜索过滤和排序
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script src="js/vue.min.js"></script>
</head>
<body>
<div id="app">
<h1>搜索过滤和排序</h1>
<input type="text" v-model="sm"/>
<ul>
<!--使用计算属性-->
<li v-for="(s,index) in searchStudent" :key="index">
name:<span v-text="s.name"></span>,
age:<span v-text="s.age"></span>
</li>
</ul>
<button @click="xss(1)">年龄升序</button>
<button @click="xss(2)">年龄降序</button>
<button @click="xss(0)">原本顺序</button>
</div>
<script>
var v=new Vue({
el:'#app',
data:{
sm:'',
sx:0,
student:[
{name:'wag',age:1},
{name:'jia',age:2},
{name:'san',age:23},
{name:'joo',age:4}
]
},
computed:{
//相关属性发生变化后执行
//输入框输入时导致sm属性发生变化,导致函数触发
searchStudent(){
//const {fStu,sm,sx}=this;//第二种定义方式 下方可直接使用
//筛选
let fStu;
fStu=this.student.filter(p=>p.name.indexOf(this.sm)!==-1);
let sx=this.sx;
//排序
if(this.sx!==0){
fStu.sort(function(p1,p2){
if(sx==2){
return p2.age-p1.age;
}else{
return p1.age-p2.age;
}
});
}
return fStu;
}
},
methods:{
//事件
xss(value){
//sx属性发生变化,导致searchStudent计算属性的方法开始执行
this.sx=value;
}
}
})
</script>
</body>
</html>
fixed
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。