【vue过滤器 filterfilters】

    技术2022-07-11  129

    参考链接–官网文档 参考链接2

    过滤器的定义?

    vue filters过滤器是vue中用来处理文本格式化的工具。可以对数据进行处理,规范项目的一些数据的特定格式。

    过滤器的原理?

    Vue的过滤器的实现参考了linux的shell命令的管道的实现原理,即上一个命令的输出是下一个命令的输入,

    过滤器的作用?

    作用是处理一些常见的文本格式化,

    过滤器的使用场景 / 使用方法?

    使用方法:
    过滤器可以用在两个地方: 1. 双花括号插值 2. v-bind表达式。 /* 在双花括号中 */ {{ message | capitalize }} /* 在 `v-bind` 中 */ <div v-bind:id="rawId | formatId"></div> 1,用户可以在组件中自定义过滤器。局部过滤器 var vm = new Vue({ el:"#app", data:{ totalMoney:0, productList:[] }, filters:{ formatMoney:function(value){ return "¥"+value.toFixed(2) } }, ... } <div class="cart-tab-2"> //应用自定义局部过滤器 <div class="item-price">{{item.productPrice | formatMoney}}</div> </div> 2,或者在创建Vue实例之前全局定义过滤器: Vue.filter("money",function(value,type){ return "¥"+value.toFixed(2)+type; }) new Vue({ // ... }) <div class="cart-tab-4"> //应用全局过滤器 <div class="item-price-total">{{item.productPrice*item.productQuantity | money('元')}}</div> </div>

    当全局过滤器和局部过滤器重名时,会采用局部过滤器。

    使用场景:

    1,处理一些文本格式化。比如规定日期格式,规定价格格式【处理数据添加美元符号等】。

    例如一个购物车界面,读取json文件获取购物车内物品的相关信息。对于单价的变量,读取后需要加美元符号或者加小数点,可以使用过滤器

    2,封装项目中的一些全局方法。项目中的一些全局方法,比如对数据作四舍五入取值的方法,比如遍历数据等一些工具方法,常常在许多地方都需要使用。需要将这些方法作为全局方法。可以通过vue.prototype , mixins 在main.js文件中封装全局方法。但维护性和可读性差。可以通过全局定义过滤器来达到同样的效果。

    知识强化。使用过滤器的 优缺点 / 注意事项,防踩坑

    过滤器可以串联:

    1,

    {{ message | filterA | filterB }}

    如上所示,filterA被定义为接收单个参数的过滤器函数,表达式message的值将作为参数传入到函数中。然后继续调用同样被定义为接收单个参数的过滤器filterB,将filterA的结果传递到filterB中。

    2,

    {{ message | filterA('arg1', arg2) }}

    如上所示,filterA被定义为接收三个参数的过滤器函数。其中message的值作为第一个参数,普通字符串’arg1’作为第二个参数,表达式arg2的值作为第三个参数。

    知识扩展:

    1,vue.prototype

    在main.js入口文件中将方法挂载到vue.prototype实现全局封装,如我们封装一个获取时间戳的函数。 Vue.prototype.now = Date.now || function () { return new Date().getTime(); }; 在.vue文件中通过this.调用 <script> export default { mounted(){ console.log('now:' + this.now()); }, } </script>

    2, mixins

    在main.js文件中注入。 mixins的全局注入规则:如果组件中没有这个getTime方法,那么就会在页面中注入这个方法。 Vue.mixin({ data() {}, methods: { getTime() { return new Date().getTime(); } } }); new App({ el: '#app' // ... });
    Processed: 0.010, SQL: 9