在Vue中定义和调用过滤器的方法

 更新时间:2023年09月15日 11:48:59   作者:传智教育  
过滤器(Filters)是 vue 为开发者提供的功能,常用于文本的格式化,这篇文章主要介绍了如何在Vue中定义和调用过滤器,需要的朋友可以参考下

过滤器(Filters)是 vue 为开发者提供的功能,常用于文本的格式化。过滤器可以用在两个地方:插值表达式和 v-bind 属性绑定。过滤器应该被添加在 JavaScript 表达式的尾部,由“管道符”进行调用,示例代码如下:

<l--在双花括号中通过“管道符“调用capitalize过滤器,对message的值进行格式化-->
<p>{{ message | capitalize }}</p>
<!--在v-bind 中通过“管道符”调用 formatId过滤器,对rawId的值进行格式化-->
<div v-bind:id="rawId| formatId"></div>

在创建 vue 实例期间,可以在 filters 节点中定义过滤器,示例代码如下:

const vm = new Vue({
    el: '#app',
    data: {
        message: 'hello vue. js',
        info: 'title info'
    },
    filters: { // 在 filters 节点下定义“过滤器”
        capitalize(str) { //把首字母转为大写的过滤器
            return str.charAt(0).toUpperCase() + str.slice(1)
        }
    }
})

在 filters 节点下定义的过滤器,称为“私有过滤器”,因为它只能在当前 vm 实例所控制的 el 区域内使用。

如果希望在多个 vue 实例之间共享过滤器,则可以按照如下的格式定义全局过滤器:

// 全局过滤器-独立于每个vm实例之外
// Vue.filter()方法接收两个参数:
//     第 1 个参数,是全局过滤器的“名字“
//     第 2 个参数,是全局过滤器的“处理函数“
Vue.filter('capitalize', (str) => {
  return str.charAt(0).toUpperCase() + str.slice(1)
})

过滤器可以串联地进行调用,例如:

<!--把 message的值,交给filterA 进行处理-->
<!--把filterA处理的结果,再交给filterB进行处理-->
<!--最终把filterB处理的结果,作为最终的值渲染到页面上-->
{{ message | filterA | filterB }}

连续调用多个过滤器的示例代码如下:

<!--串联调用多个过滤器-->
<p>{{text | capitalize | maxLength)}</p>
//全局过滤器-首字母大写
Vue.filter('capitalize', (str) => {
  return str.charAt(0).tolpperCase() + str.slice(1) + '--'
})
//全局过滤器 - 控制文本的最大长度
Vue.filter('maxLength', (str) => {
if (str.length <= 10) return str
return str.slice(0, 11) +'…'
})

过滤器的本质是 JavaScript 函数,因此可以接收参数,格式如下:

<!-- arg1和 arg2 是传递给 filterA 的参数-->
<p>{{ message | filterA(arg1, arg2) }}</p>
//过滤器处理函数的形参列表中:
//  第一个参数:永远都是”管道符“前面待处理的值
//  从第二个参数开始,才是调用过滤器时传递过来的arg1和arg2参数
Vue.filter('filterA',(msg, arg1, arg2) =>{
  //过滤器的代码逻辑...
})

过滤器传参,示例代码如下:

<!--调用 maxlength 过滤器时传参-->
<p>{{text | capitalize | maxLength(5)}}</p>
//全局过滤器 - 首字母大写
Vue.filter('capitalize',(str) => {
return str.charAt(0).toUpperCase() + str.slice(1) + '~~'
})
//全局过滤器-控制文本的最大长度
Vue.filter('maxLength', (str, len = 10) => {
  if (str.length A len) return str
  return str.slice(0, len) +'…
})

过滤器的兼容性

过滤器仅在 vue 2.x 和 1.x 中受支持,在 vue 3.x 的版本中剔除了过滤器相关的功能。

在企业级项目开发中:

⚫ 如果使用的是 2.x 版本的 vue,则依然可以使用过滤器相关的功能

⚫ 如果项目已经升级到了 3.x 版本的 vue,官方建议使用计算属性或方法代替被剔除的过滤器功能

具体的迁移指南,请参考 vue 3.x 的官方文档给出的说明:

https://v3.vuejs.org/guide/migration/filters.html#migration-strategy

到此这篇关于如何在Vue中定义和调用过滤器的文章就介绍到这了,更多相关vue调用过滤器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue通过v-html指令渲染的富文本无法修改样式的解决方案

    vue通过v-html指令渲染的富文本无法修改样式的解决方案

    这篇文章主要介绍了vue通过v-html指令渲染的富文本无法修改样式的解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • 将 vue 生成的 js 上传到七牛的实例

    将 vue 生成的 js 上传到七牛的实例

    本篇文章主要介绍了将 vue 生成的 js 上传到七牛的实例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • vite构建项目并支持微前端

    vite构建项目并支持微前端

    本文主要介绍了vite构建项目并支持微前端,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • vue+springboot实现登录功能

    vue+springboot实现登录功能

    这篇文章主要为大家详细介绍了vue+springboot实现登录功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • 如何写一个 Vue3 的自定义指令

    如何写一个 Vue3 的自定义指令

    这篇文章主要介绍了如何写一个 Vue3 的自定义指令,如果我们想在 Vue.js 的项目中实现图片懒加载,那么用自定义指令就再合适不过了,那么接下来就让我手把手带你用 Vue3 去实现一个图片懒加载的自定义指令 v-lazy,需要的朋友可以参考一下
    2022-01-01
  • vue懒加载和子组件懒加载的区别详解

    vue懒加载和子组件懒加载的区别详解

    这篇文章主要给大家介绍了vue懒加载和子组件懒加载有什么区别,Vue懒加载指的是对图片等资源的延迟加载,而子组件懒加载则是指延迟加载组件实例,文中通过代码示例给大家讲解的非常详细,需要的朋友可以参考下
    2023-12-12
  • 详解Vue中表单组件的双向数据绑定

    详解Vue中表单组件的双向数据绑定

    Vue 提供了双向数据绑定机制,使得开发者可以轻松地将表单组件的值与 Vue 实例中的数据进行关联,本文将详细介绍如何在 Vue 中使用这些表单组件,并实现双向数据绑定,需要的可以参考下
    2024-03-03
  • Vue中一个组件调用其他组件的方法详解(非父子组件)

    Vue中一个组件调用其他组件的方法详解(非父子组件)

    vue中最常见子父组件产值,大家一定都很熟悉,最近项目中碰到非父组件中调用子组件方法的问题,这篇文章主要给大家介绍了关于Vue中一个组件调用其他组件的方法(非父子组件),需要的朋友可以参考下
    2022-10-10
  • vue3中addEventListener的用法详解

    vue3中addEventListener的用法详解

    vue3中定义全局指令时,往往会碰到一个问题:事件无法解绑,为什么会这样,因为通常在指令的mounted钩子中绑定事件,事件处理函数也定义在mounted中,本文讲给大家讲讲vue3中addEventListener的妙用,需要的朋友可以参考下
    2023-08-08
  • vue-cli + sass 的正确打开方式图文详解

    vue-cli + sass 的正确打开方式图文详解

    本文通过图文并茂的形式给大家介绍了vue-cli + sass 的正确打开方式,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2017-10-10

最新评论