首页IT科技vue过滤器传多个参数(Vue3 之 过滤器)

vue过滤器传多个参数(Vue3 之 过滤器)

时间2025-06-13 19:26:44分类IT科技浏览6728
导读:1、过滤器简介 1.1、全局过滤器与局部过滤器...

1                、过滤器简介

1.1                    、全局过滤器与局部过滤器

过滤器本质上是一个函数            ,与自定义指令类似            。

        全局过滤器

Vue.filter(id, [definition])

     局部过滤器

new Vue({ el: #app, filters: { definition(value): { ... } } })

案例:将字符串首字母转换为大写字母的全局过滤器

Vue.filter(capitalize, function (value) { if (!value) return ; value = value.toString(); return value.charAt(0).toUpperCase() + value.slice(1); })

 如果换成局部过滤器

let vm = new Vue({ el: #app, data: { // 参数定义                       ,字典形式 }, computed: { // 计算属性        ,多次调用         ,只计算一次 }, methods: { // 普通方法                      ,多次调用            ,多次计算 }, filters: { // 过滤器 capitalize(value) { if (!value) return ; value = value.toString(); return value.charAt(0).toUpperCase() + value.slice(1); } } })

注意:

当全局过滤器和局部过滤器重名      ,会采用局部过滤器 与自定义命令一样                     ,全局过滤器可以在任何 Vue 实例的模板中使用                ,而局部过滤器只能在该实例绑定的视图中使用

过滤器可以使用在两个地方:

    双花括号:{{ 变量 | 过滤器 }}

    v-bind 表达式:v-bind:href=“变量 | 过滤器            ”

2       、过滤器的参数

过滤器函数总是接收表达式的值作为第一个参数   ,过滤器本质上是一个 JS 函数                    ,自然可以接收多个参数                       。

    不建议把过滤器功能做的很复杂                    ,这违背了过滤器的设计初衷,比如:Vue.filter(‘format’, function (value, …params) {…})

实例:为表达式的值添加前后缀的过滤器

  <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div id="app"> <h2>过滤器</h2> <!-- 输出:vue-filters.js --> <p>{{ filename | format(vue, suffix) }}</p> </div> <script src="VueJs/vue.js"></script> <script> Vue.filter(format, function (value, prefix, suffix) { if (!value) return ; value = value.toString(); return prefix + "-" + value + "." + suffix; }) let vm = new Vue({ el: #app, data: { filename: filters, suffix: js }, computed: { // 计算属性,多次调用                ,只计算一次 }, methods: { // 普通方法                        ,多次调用    ,多次计算 }, filters: { // 过滤器 } }) </script> </body> </html>

 3            、过滤器的串联

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .profile {} </style> </head> <body> <div id="app"> <h2>过滤器</h2> <!-- 输出结果:DLROW OLLEH --> <p>{{ message | uppercase | reverse }}</p> </div> <script src="VueJs/vue.js"></script> <script> Vue.filter(uppercase, function (value) { if (!value) return ; value = value.toString(); return value.toUpperCase(); }) Vue.filter(reverse, function (value) { if (!value) return ; value = value.toString(); return value.split().reverse().join(); }) let vm = new Vue({ el: #app, data: { message: hello world }, computed: { // 计算属性            ,多次调用                       ,只计算一次 }, methods: { // 普通方法        ,多次调用         ,多次计算 }, filters: { // 局部过滤器 } }) </script> </body> </html>

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
maven依赖包报错(两把利斧解决maven的类包冲突问题 Spring,企业应用 Java ITeye论坛) 蓬莱SEO技巧诀窍(蓬莱seo窍门方法)