vue filterçåç§ç¨æ³
æ¬ç« 主è¦è®²vue2çè¿æ»¤å¨ç使ç¨
å ä»ç»ä¸vue1ä¸vue2çfilteråºå«ï¼ä¹å°±æ¯vue2æ´æ°çå°æ¹
ããa: 2.0å°1.0ææèªå¸¦çè¿æ»¤å¨é½å é¤äºï¼ä¹å°±æ¯è¯´ï¼å¨2.0ä¸ï¼è¦ä½¿ç¨è¿æ»¤å¨ï¼åéè¦æä»¬èªå·±ç¼åã
ããb: 2.0è¿æ»¤å¨çä¼ åæ¹å¼ä¸æ¯ä»¥åçæ¹å¼ï¼æ¯ä»¥å½æ°ä¼ åçæ¹å¼ï¼ä¸é¢ç¤ºä¾ï¼åé¢æå ·ä½ç¤ºä¾ï¼ï¼
ä¹åè°ç¨: {{msg | mimi '12' '5'}}
ç°å¨è°ç¨: {{msg | mimi('12','5')}}
ãc: ç§»é¤ååè¿æ»¤å¨ï¼
Vue.filter('change', {
ã ããã ãread: function (val) {
ãããã ããreturn val
ãããã ã},
ãããããwrite: function (val, oldVal) {
ãã ãã ãreturn isEmail(val) ? val : oldVal
ããããã}
})
1.ç»ä»¶å é¨è¿æ»¤ï¼æ¤ä¾ååæ³éç¨äºå¤çæ°æ®æ¾ç¤ºçæ ·å¼ï¼ä¸ä¼æ¹ååæ°æ®ï¼
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>filter</title>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
<ul>
<!--æ·»å ä¸¤ä¸ªè¿æ»¤å¨,注æä¸è¦å²çª,注æå
å顺åº-->
<li v-for="item in list">{{item.id | filterAdd1 | filterAdd2}}</li>
</ul>
</div>
</body>
<script>
var vm = new Vue({
el:'#app',
data(){
return {
list:[
{"id":0,"title":"11111","cont":"111111"},
{"id":1,"title":"22222","cont":"111111"},
{"id":2,"title":"33333","cont":"111111"},
{"id":3,"title":"44444","cont":"111111"},
]
}
},
filters:{
filterAdd1(item) {
return item+10;
},
filterAdd2(item) {
return '$'+item;
}
},
methods:{
},
mounted(){
}
})
</script>
</html>
2.注åå¨å ¨å±çfliterï¼filterä¼ å¼ï¼filterå¨æä¼ å¼
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>filter</title>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
<ul>
<!--æ·»å ä¸¤ä¸ªè¿æ»¤å¨,注æä¸è¦å²çª,注æå
å顺åº-->
<!-- è¿æ»¤ä¼ å¼ï¼å¸¦å¼å·çæ¯å符串ï¼ä¸å¸¦æ¯number,ä¼ çå¼å¯ä»¥å¨æç»å®-->
<li v-for="item in list">{{item.id | filterAdd1(Number(input),20) | filterAdd2}}</li>
</ul>
<input type="text" placeholder="place" v-model="input">
</div>
</body>
<script>
Vue.filter('filterAdd1', function (value,one,two) {
return value+one+two;//é»è®¤ç¬¬ä¸ä¸ªåæ°å°±æ¯é»è®¤è¦è¿æ»¤çé£ä¸ªå¼
})
Vue.filter('filterAdd2', function (value) {
return '$'+value;
})
var vm = new Vue({
el:'#app',
data(){
return {
input:5,
list:[
{"id":0,"title":"11111","cont":"111111"},
{"id":1,"title":"22222","cont":"111111"},
{"id":2,"title":"33333","cont":"111111"},
{"id":3,"title":"44444","cont":"111111"},
]
}
},
methods:{
},
mounted(){
}
})
</script>
</html>
ç»æï¼
3. 计ç®å±æ§çéï¼methodsæ¹æ³çé
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<!-- <script src="vue.js"></script> -->
<script src="https://unpkg.com/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
<div @click="addMore">å è½½æ´å¤</div>
<ul><li v-for="item in filterlist">{{item}}</li></ul>
<hr>
<ul><li v-for="item in filterlistFun()">{{item}}</li></ul>
</div>
</body>
<script>
var vm = new Vue({
el:'#app',
data(){
return {
size:5,
list:[
{"id":0,"title":"11111","cont":"111111"},
{"id":1,"title":"22222","cont":"111111"},
{"id":2,"title":"33333","cont":"111111"},
{"id":3,"title":"44444","cont":"111111"},
{"id":4,"title":"55555","cont":"55555"},
{"id":5,"title":"66666","cont":"66666"},
{"id":6,"title":"77777","cont":"77777"},
{"id":7,"title":"77777","cont":"88888"},
{"id":8,"title":"888888","cont":"999999"},
{"id":9,"title":"000000","cont":"99999"},
{"id":10,"title":"a88888","cont":"99999"},
{"id":11,"title":"a22222","cont":"111111"},
{"id":12,"title":"a33333","cont":"111111"},
{"id":13,"title":"a44444","cont":"111111"},
{"id":14,"title":"a55555","cont":"55555"},
{"id":15,"title":"a66666","cont":"66666"},
{"id":16,"title":"a77777","cont":"77777"},
{"id":17,"title":"a77777","cont":"88888"},
{"id":18,"title":"a888888","cont":"999999"},
{"id":19,"title":"a000000","cont":"99999"},
{"id":20,"title":"a88888","cont":"99999"}
]
}
},
computed: {
filterlist () {
let num=this.size;
return this.list.filter(function (number) {
return number.id < num
})
}
},
methods:{
filterlistFun(val){
let num=this.size;
return this.list.filter(function (number) {
return number.id < num
})
},
addMore(){
this.size+=5;
},
},
mounted(){
}
})
</script>
</html>
4.使ç¨jsä¸çè¿ä»£å½æ°filter
å®ä¾ä¸åæ
var app5 = new Vue({
el: '#app5',
data: {
shoppingList: [
"Milk", "Donuts", "Cookies", "Chocolate", "Peanut Butter", "Pepto Bismol", "Pepto Bismol (Chocolate flavor)", "Pepto Bismol (Cookie flavor)"
],
key: ""
},
computed: {
filterShoppingList: function () {
// `this` points to the vm instance
var key = this.key;
var shoppingList = this.shoppingList;
//å¨ä½¿ç¨filteræ¶éè¦æ³¨æçæ¯ï¼åé¢è°ç¨çæ¯éè¦ä½¿ç¨filterçæ°ç»ï¼èç»filter彿°ä¼ å
¥çæ¯æ°ç»ä¸çæ¯ä¸ªitemï¼ä¹å°±æ¯è¯´filteréé¢ç彿°ï¼æ¯æ¯ä¸ªitemè¦å»åçï¼å¹¶å°æ¯ä¸ªç»æè¿åã
return shoppingList.filter(function (item) {
return item.toLowerCase().indexOf(key.toLowerCase()) != -1
});;
}
}
})
<ul>
Filter Key<input type="text" v-model="key">
<li v-for="item in filterShoppingList">
{{ item }}
</li>
</ul>
æç»ææå®ç°äºæ ¹æ®å ³é®åæ¥è¿æ»¤å表çåè½ã
å ¶ä»çä¸äºJs è¿ä»£æ¹æ³ââfilter()ãmap()ãsome()ãevery()ãforEach()ãlastIndexOf()ãindexOf()