Vue.js基础-过滤器(filters)

昨天开始接触到VueJS里面的过滤器,反反复复很多遍,总是不得其法,今天终于弄明白了,赶紧写个文档记录一下!

Vue.js 允许你自定义过滤器,可被用于一些常见的文本格式化。

过滤器可以用在两个地方:双花括号插值和 v-bind 表达式 (后者从 2.1.0+ 开始支持)。过滤器应该被添加在 JavaScript 表达式的尾部,由“管道”符号指示:

<!-- 在花括号中 -->
{{data属性|过滤器名}}

<!-- v-bind表达式 -->
<div class="属性|过滤器名"></div>

定义过滤器有两种方式:

1.通过组件的方式定义在vue实例化内部:

<div class="box">
	<p>{{msg}}</p>
	<p>{{msg|sum}}</p>
	<p>{{msg|produce}}</p>
	<p>{{msg|sum|produce}}</p>
	<p>{{day|produce|sum}}</p>
	<p>{{msg|count(10,20)}}</p>
	<input type="text" v-bind:value="msg|sum">
	<input type="text" v-model="msg">
</div>
<script>
new Vue({
    el:'.box',
    data:{
        msg:1,
	day:6
    },
    filters:{
	sum:function(value){
	    return value+1;
	},
	produce:function(value){
	    return value-2;
	},
	count:function(value,a,b){
	    return value+a+b;
	}
    }
})
</script>

或者在创建 Vue 实例之前定义全局过滤器:

<div class="test">
    <p>{{message | sum}}</p>
    <p>{{message | cal 10 20}}</p>
    <p>{{message | sum | currency }}</p>
    <input type="text" v-bind:id="'list'+ message | change +''">
</div>
<script type="text/javascript">
Vue.filter("sum", function(value) {
    return value + 4;
});
Vue.filter('cal', function(value, begin, xing) {
    return value + begin + xing;
});
Vue.filter("change", {
    read: function(value) {
        return value;
    },
    write: function(newVal, oldVal) {
        console.log("newVal:" + newVal);
        console.log("oldVal:" + oldVal);
        return newVal;
    }
});
new Vue({
    el: ".test",
    data: {
        message: 12
    }
});
</script>

通过上面两个例子可以发现,过滤器函数是通过接收表达式的值 (或之前的操作链的结果) 作为第一个参数(当然表达式的值和操作结果有可能是字符串或者是数字)。例如:

        在上面的第一个例子中,{{msg | sum}}中会将msg作为第一个参数传入sum(value)过滤器函数中,此处的value接收的就是msg的值,然后返回计算的结果。

当然,过滤器也可以串联,但过滤器与过滤器之间不可以冲突。例如:

        在{{day | produce | sum}}中,则会将day作为第一个参数传入produce(value)过滤器函数中,然后将produce过滤器函数返回的值再作为参数传入sum(value)中,最后获取表达式的值。

另外,因为过滤器是JavaScript 函数,所以过滤器也可以接收参数。例如:

        在{{msg | count(10,20)}}中,count()过滤器函数会仍接收msg作为第一个参数,但同时也会接收count中带有的参数,这时 数值10 会作为count函数的第二个参数,数值20 会作为count函数的第三个参数。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值