html
-
<div id="test"> <label> <input type="text" v-model="searchWord" placeholder="搜索一下"/> </label> <button type="button" @click="orderType=1">原来排序</button> <button type="button" @click="orderType=2">升序排序</button> <button type="button" @click="orderType=3">降序排序</button> <ul> <li v-for="(p, index) in searchResult"> {{p.name}}----{{p.age}} </li> </ul> </div>
js
-
<script src="./js/vue.js"></script> <script> new Vue({ el:"#test", data(){ return { persons:[ {name:"Tom", age:18}, {name:"Jack", age:16}, {name:"Jerry", age:15}, {name:"Kate", age:17}, {name:"Lee", age:14} ], searchWord: "", orderType: 1 } }, computed:{ searchResult(){ const {orderType, searchWord, persons} = this; let result = persons.filter(person=>person.name.indexOf(searchWord)!==-1); if(orderType !== 1){ result.sort((one, two)=>{ if(orderType === 2){ return one.age - two.age }else if(orderType === 3){ return two.age - one.age } }) } return result; } } }) </script>