Vue中过滤器定义及使用

介绍

过滤器实质不改变原始数据,只是对数据进行加工处理后返回过滤后的数据再进行调用处理。我们看一下官方的定义:

Vue.js 允许你自定义过滤器,可被用于一些常见的文本格式化。过滤器可以用在两个地方:双花括号插值和 v-bind 表达式 (后者从 2.1.0+ 开始支持)。过滤器应该被添加在 JavaScript 表达式的尾部,由“管道”符号指示:

<!-- 在双花括号中 -->
{
   
   { message | capitalize }}

<!-- 在 `v-bind` 中 -->
<div v-bind:id="rawId | formatId"></div>

Vue中过滤器如何使用

组件内过滤器

注意:过滤器函数接收的第一个值是message,依次是传的值。
过滤器是可以叠加的,后面过滤器接收前面过滤器的返回值。

如这段代码:

<div id="app">
	<div v-bind:id="message|capitalize('a','b')|gl"></div>
</div>

它的过滤器 capitalize的第一个参数是message,第二个第三个参数是字符串a和b

在组件的选项中定义

filters:{
		capitalize:function(value,x,y){
			return value+x+y;
		},
		gl:function(value){
			value=value.toString();
			return value.toUpperCase();
		}
	}

全局过滤器

全局过滤器使用:Vue.filter( filterName,( )=>{ return // 数据处理结果 } )  

  • 参数一:是过滤器的名字,也就是管道符后边的处理函数;
  • 参数二:处理函数,处理函数的参数同局部过滤器(组件内过滤器)一样

 注意:当全局过滤器和局部过滤器重名时,会采用局部过滤器

全局定义


   Vue.filter("addPriceIcon",function(value){
            console.log(value)//200
            return '¥' + value
        })
    
   new Vue({
   ...
   })

或者

// 实现一个给所有数字小数部分都变成两位,没有后补零
export const yuan = value =>
  value
    ? (value / 100).toFixed(2)
    : value;
 
export default {
  install(Vue) {
    Vue.filter('yuan', yuan);
  }
};

在main.js里引入

import filters from '@/filter';
Vue.use(filters);

可以在任意组件内使用只能是在v-bind或者双花括号插值里用

<!-- 在双花括号中 -->
{
   
   { message | yuan}}
 
<!-- 在 `v-bind` 中 -->
<div v-bind:id="rawId | yuan"></div>

总结

vue中过滤器的作用可被用于一些常见的文本格式化。(也就是修饰文本,但是文本内容不会改变)

过滤器分全局过滤器和局部过滤器,全局过滤器在项目中使用频率很高,要掌握

过滤器可以用在两个地方:双花括号插值 或 v-bind表达式。

猜你喜欢

转载自blog.csdn.net/m0_65335111/article/details/127585998