Vue过滤器

136 阅读1分钟

有的时候,有些数据是半动态的,即数据的一部分是变化的,一部分是固定不变或者也可能能动态,但是这种动态是相对比较少的。那么我可以使用过滤器来对数据进行一步优化过滤。在vue中提供了Vue.filter('flterName',fn)来定义一个过滤器,过滤器可以在HTML代码中使用,如对动态拿到的数据进行过滤,

1.定义过滤器

第一个参数是过滤器的名字

第二个参数是过滤器的功能函数。如果不定义,vue也不知道你这个字符串是什么,有什么作用。

2.过滤器功能函数

第一个参数是传入的要过滤数据,即原数据。

第二个参数开始就是html调用过滤器的时候传入的参数。

vue局部过滤器

一个简单的时间转换案例

<div id="app" v-cloak>
	{{ new Date() | time }}
</div>
<script type="text/javascript">
	new Vue({
		el: "#app",
		data: {
			
		},
		filters: {
			time(data) {
				let date = new Date();
				let y = date.getFullYear();
				let m = date.getMonth() + 1;
				let d = date.getDate();
				let h = date.getHours();
				let mm = date.getMinutes();
				let s = date.getSeconds();
				console.log(y, m, d, h, mm, s)
				return date = y + '年' + m + '月' + d + '日' + h + '时' + mm + '分' + s + '秒';
			}
		},
		mounted: function() {
			
		}
	})
</script>

vue全局过滤器

<div class="demo">
    <input type="number" v-model="length">
    {{length}}mm => {{length | meter}}
</div>

script

Vue.filter('meter',function(val,unit){  
    val = val/1000 || 0;
    if (val) {
        unit = "m";     
        return val + unit;
    }
    return;         
});
new Vue({
    el:'.demo',
    data:{
        price:'',
        length:'',
    }
});