广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >如何使用vue过滤器filter
  • 724
分享到

如何使用vue过滤器filter

2024-04-02 19:04:59 724人浏览 泡泡鱼
摘要

目录概述定义过滤器过滤器的使用自定义全局过滤器局部过滤器注意事项示例一(局部过滤器)示例二(全局过滤器)概述 在 Vue2.0 之前,是有内置过滤器的,在2.0中已经没有内置的过滤器

概述

Vue2.0 之前,是有内置过滤器的,在2.0中已经没有内置的过滤器了,但我们可以自定义过滤器。

关于 vue 过滤器,在官方文档中是这样说明的:

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

即过滤器是用来格式化数据的一个函数。过滤器不会修改原始数据,它的作用是过滤数据,就是对数据进行加工处理并返回处理后的数据,比如做一些数据格式上的修改,状态转换等。

过滤器分为两种

  • 组件内的过滤器(组件内有效)
  • 全局过滤器(所有组件共享)

定义过滤器

第一个参数是过滤器的名字

第二个参数是过滤器的功能函数 (若不定义vue就不知道这个字符串是什么,有什么作用)。

过滤器的功能函数

  • 声明 function(data,argv1,argv2...){}
  • 第一个参数是传入的要过滤的数据,即调用时管道符左边的内容。
  • 第二个参数开始往后就是调用过滤器的时候传入的参数。

过滤器的使用

先注册,后使用

组件内 filters:{ 过滤器名: fn } fn 内通过 return 返回最终的数据

全局 Vue.filter('过滤器名',fn) fn 内通过 return 返回最终的数据

使用 {{ 数据 | 过滤器名 }}


// 使用过滤器时需要添加管道符号( | )作为分隔,管道符 | 右边是过滤器名称,即文本的功能函数
​
<!-- 在双花括号中 -->
{{ message | 过滤器名称 }}
​
<!-- 在 `v-bind` 中 -->
<div v-bind:id="id | 过滤器名称"></div>

自定义全局过滤器


Vue.filter('过滤器名称', function(val) { // val表示要被处理的数据
    // 过滤器业务逻辑,要有返回值
})
​
<div>{{ msg | 过滤器名称 }}</div>
<div v-bind="msg | 过滤器名称"></div>

局部过滤器


data () {
    return {
        msg: 'hello world'
    }
},
//定义私用局部过滤器。只能在当前 vue 对象中使用
filters: {
    dataFORMat: (msg, a) => { // msg表示要过滤的数据,a表示传入的参数
        return msg + a;
    }
}
​
<p>{{ msg | dataFormat('!')}}</p> // 结果: hello world!

注意事项

1.全局注册时是 filter 没有 s , 而组件过滤器是 filters,是有 s 的,虽然写的时候没有 s 也不报错,但是过滤器是没有效果的。

2.当全局过滤器和局部过滤器名字重复的时候,会以就近原则进行调用,即:局部过滤器优先于全局过滤器被调用

3.一个表达式可以使用多个过滤器,其执行顺序从左往右,前一个过滤器的结果作为后一个过滤器的被处理数据,所以要注意使用顺序

熟悉 vue 的童鞋会知道,过滤器有时同methods、computed、watch一样可以达到处理数据的目的,但又不能替代它们,因为它不能改变原始值。如果一个过滤器的内部特别复杂,可以考虑把它写成一个计算属性,因为计算属性本身带有缓存,可复用性强,而过滤器一般用来做一些简单的操作。

在实际开发中,全局的过滤器要比局部过滤器使用的更广泛一些,说白了我们为什么要使用过滤器,其实就跟使用函数是一样,把一些方法封装,供其它组件使用,这样调用起来更方便也更快捷。

大家知道全局过滤器是在 main.js 中定义的,但万一项目过大,有多个过滤器,那 main.js 就一堆代码,为了项目模块化,最好是有专门的目录来统一存放这些过滤器,然后把处理函数给抽离出去,放在一个.js文件中,下边通过示例代码展示。

示例一(局部过滤器)

格式化时间或日期,补全指定位数,不足个位数补0


// filter/index.js文件
export default {
    dateFormat: value => {
        const dt = new Date(value * 1000)
    
        const y = dt.getFullYear()
        const m = (dt.getMonth() + 1 + '').padStart(2, '0') // .padStart(指定位数,"要补全的符号或值")
        const d = (dt.getDay() + '').padStart(2, '0')
        
        const hh = (dt.getHours() + '').padStart(2, '0')
        const mm = (dt.getMinutes() + '').padStart(2, '0')
        const ss = (dt.getSeconds() + '').padStart(2, '0')
        
        return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
    }
}
​
// 在 .vue 文件中使用局部过滤器
<script>
    import filters from '../filter'
​
    export default {
        ... ... 
        filters: { ...filters },
        data() {
            return {}
        }
    }
</script>
​
<div> 日期:{{ date | dateFormat }} </div>

示例二(全局过滤器)

通用字典项的回显:比如性别男女或通用选择是否,后端传给我们的数据是0、1,我们需要在页面上显示男女或是否


// constants/dictionary.js 文件
​
export const GENDER_MENU = [
    { code: 0, label: '男'},
    { code: 1, label: '女'}
];
​
export const COMMON_MENU = [
    { code: 0, label: '否'},
    { code: 1, label: '是'}
];
​
export default {
    GENDER_MENU, COMMON_MENU
}

filter / dict.js 文件


// filter/dict.js 文件
​
import Dict from '../constants/dictionary'
​
export const genderMenu = {
    func: value => {
        const target = Dict.GENDER_MENU.filter(item => {
            return item.code = value;
        })
        return target.length ? target[0].label : value;
    }
}
​
export const commonMenu = {
    func: value => {
        const target = Dict.COMMON_MENU.filter(item => {
            return item.code = value;
        })
        return target.length ? target[0].label : value;
    }
}

filter / index.js 文件


// filter/index.js 文件
​
import * as filters from './dict' // 导入过滤函数
​
const Install = Vue => {
    // 导入的 filters 是一个对象,使用Object.keys()方法,得到一个由key组成的数组,遍历数据,让key作为全局过滤器的名字,后边的是key对应的处理函数,这样在任何一个组件中都可以使用全局过滤器了
    Object.keys(filters).forEach(key => {
        Vue.filter(key, filters[key].func)
    })
    
}
​
export default Install

main.js 文件


// main.js 文件
​
... ...
import filters from  './../filter/index'
Vue.use(filters)
... ...

在.vue 文件中使用全局过滤器


// .vue 文件中使用全局过滤器
​
<p>性别:{{ gender | genderMenu }}</p>  

以上就是如何使用vue过滤器filter的详细内容,更多关于vue过滤器filter的资料请关注编程网其它相关文章!

--结束END--

本文标题: 如何使用vue过滤器filter

本文链接: https://www.lsjlt.com/news/125666.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何使用vue过滤器filter
    目录概述定义过滤器过滤器的使用自定义全局过滤器局部过滤器注意事项示例一(局部过滤器)示例二(全局过滤器)概述 在 vue2.0 之前,是有内置过滤器的,在2.0中已经没有内置的过滤器...
    99+
    2022-11-12
  • vue中过滤器filter怎么用
    这篇文章主要为大家展示了“vue中过滤器filter怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue中过滤器filter怎么用”这篇文章吧。示例<...
    99+
    2022-10-19
  • Vue中的过滤器(filter)详解
    目录过滤器使用位置全局过滤器、局部过滤器 全局过滤器:局部过滤器:过滤器中传入多个参数:多个过滤器串联:官方文档:https://cn.vuejs.org/v2/guide...
    99+
    2022-11-13
    Vue中的过滤器 Vue filter过滤器 vue filter
  • Java过滤器Filter如何使用教程
    这篇“Java过滤器Filter如何使用教程”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java过滤器Filter如何使用...
    99+
    2023-07-05
  • vue过滤器filter的示例分析
    这篇文章将为大家详细讲解有关vue过滤器filter的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。vue的过滤器一般在JavaScript 表达式的尾部,由“|...
    99+
    2022-10-19
  • java filter过滤器怎么使用
    在 Java 中使用过滤器(Filter)需要以下步骤:1. 创建一个类并实现 javax.servlet.Filter 接口。该接...
    99+
    2023-09-06
    java filter
  • JavaWeb过滤器Filter怎么使用
    这篇文章主要介绍“JavaWeb过滤器Filter怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JavaWeb过滤器Filter怎么使用”文章能帮助大家解决...
    99+
    2022-10-19
  • 如何使用Filter过滤器中访问getSession()
    本篇内容介绍了“如何使用Filter过滤器中访问getSession()”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Filter过滤器中访...
    99+
    2023-06-26
  • python如何使用Filter()过滤函数
    小编给大家分享一下python如何使用Filter()过滤函数,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! Filter()过滤函数filter()函...
    99+
    2023-06-27
  • log4j2如何使用filter过滤日志
    小编给大家分享一下log4j2如何使用filter过滤日志,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!背景说明log4j2作为log4j的升级版本,其性能自然是...
    99+
    2023-06-22
  • es6中filter过滤器怎么使用
    这篇“es6中filter过滤器怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“es6中filter过滤器怎么使用”文...
    99+
    2023-07-05
  • 如何使用filter方法过滤数组
    要使用`filter`方法过滤数组,可以按照以下步骤进行操作:1. 创建一个数组;2. 使用`filter`方法对数组进行过滤;3....
    99+
    2023-10-09
    filter
  • python如何使用filter函数过滤值
    这篇文章主要介绍了python如何使用filter函数过滤值,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。使用filter函数过滤值filter函数用于过滤可迭代对象中的某些...
    99+
    2023-06-27
  • vue如何使用过滤器
    在vue中使用过滤器的方法:1.新建vue.js项目;2.使用import方法引入filter过滤器;3.全局注册过滤器;4.执行命令直接引用;具体步骤如下:首先,在vue-cli中创建一个vue.js项目;vue create proje...
    99+
    2022-10-16
  • SpringBoot过滤器Filter使用实例详解
    目录简介用法功能实现简介 过滤器是AOP(面向切面编程)思想的具体实现。可以过滤浏览器发出的请求,并且决定放行请求还是中断请求。 在浏览器对服务器发起请求或者服务器对浏览器响应,都会...
    99+
    2022-11-13
  • JS中filter( )数组过滤器的使用
    目录一、前言二、方法简介三、用法案例总结一、前言 数组过滤器是前端数据处理的一种常用方法,对于前端来说,后端返回的数据我们需要经过处理以后才能获取到自己想要的数据,进行进一步的操作。...
    99+
    2022-11-12
  • Java中使用Filter过滤器的方法
    Filter过滤器 着重记录下 public void doFilter(){} 方法参数: (1) ServletRequest servletRequest  请求re...
    99+
    2022-11-12
  • AngularJS中的过滤器filter怎么使用
    这篇文章主要介绍“AngularJS中的过滤器filter怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“AngularJS中的过滤器filter怎么使用”文章能帮助大家解决问题。在Angul...
    99+
    2023-07-04
  • Vue过滤器(filter)实现及应用场景详解
    1. 简单介绍 Vue.js 允许你自定义过滤器(filter),可被用于一些常见的文本格式化。 过滤器可以用在两个地方:双花括号插值和 v-bind 表达式 (后者从 2.1.0...
    99+
    2022-11-12
  • vue中过滤器如何使用
    这篇文章主要介绍“vue中过滤器如何使用”,在日常操作中,相信很多人在vue中过滤器如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue中过滤器如何使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作