首页 > 其他分享 >Vue过滤器的使用详解(代码实现)

Vue过滤器的使用详解(代码实现)

时间:2023-03-05 23:33:24浏览次数:54  
标签:Vue return dayjs value js 详解 参数 过滤器

过滤器的功能是对要显示的数据进行格式化后再显示,其并没有改变原本的数据,只是产生新的对应的数据

 过滤器,其实不是必须要用的东西,它只是vue给我们提供的新的数据处理方式,过滤器能做到的,用计算属性,methods方法,依然可以实现

案例1:(过滤器简单使用)

<template>
        <h3>{{str | strChange}}</h3>
</template>
<script>
export default {
  data (){
    return {
      str:'hello world'
    };
  },
  filters:{
    // toUpperCase()方法将英文字母转换为大写
    strChange(value) {
      console.log('value值',value)
       return value.toUpperCase()
    }
  }
}
</script>

上图中 A为参数(要被处理的数据)B为过滤器,中间通过管道符(‘ | ’)连接 ,管道符两边有空格分离(‘我觉得就是一个规范,因为去掉两边的空格,依然可以运行’)

过滤器其实也是按照函数来写的,过滤器写在filters下,与data ,methods等同一级。如图B就是过滤器,定义在filters内,图中A作为参数传递给B,然后B return出一个结果,将整个C替换掉。注意,strChange中的value为参数A 并不是从data中直接拿到的。

效果1:

案例2:(过滤器带参数)

<template>
        <h3>{{str | strChange('加油 China !')}}</h3>
</template>
<script>
export default {
  data (){
    return {str:'hello world'};
  },
  filters:{
    strChange(value,res) {
      console.log('value值:',value,'res值:',res)
       return value+' ! '+res
    }
  }
}
</script>

     '加油 China !' 为参数,但是在过滤器中,第一个参数永远是管道符前边的这个参数(‘要被处理的数据’)

效果2:

案例3:(串联)

<template>
        <h3>{{ message | filterA | filterB }}</h3>
</template>
<script>
export default {
  data (){
    return {message:'hello world'};
  },
  filters:{
    filterA(value){
      return value.slice(0,5)
    },
    filterB(value){
      return value+','+'天命爱心职责!'
    }
  }
}
</script>

过滤器串联是按顺序来进行编译的,A作为参数给filterA,return出结果替换掉B,B作为参数给filterB,return出结果替换掉C。

效果3:

案例4:(局部/全局过滤器) 

1.新建filter文件夹,添加filter.js文件:

2.添加到Vue全局中,在main.js中引入,并且添加:

3.在组件中就可以直接使用了:

<template>
    <div>
        <h3>{{ message | myfilter}}</h3>
        输入:<input type="text" v-bind:value='message | myfilter'>
    </div>
</template>
 
<script>
export default {
  data (){
    return {message:'hello world'};
  },
}
</script>

过滤器可以用在两个地方:双花括号插值和 v-bind 表达式 (后者从 2.1.0+ 开始支持)。 

 效果4:

 案例5:(简单应用)

通过一个 Day.js 这个轻量的处理时间和日期的 JavaScript 库,来快速掌握过滤器的使用。

Node.js 项目中使用 Day.js,使用 NPM 安装:

https://cdn.bootcdn.net/ajax/libs/dayjs/1.11.0/dayjs.min.js

  我是要在 Node.js 项目中使用 Day.js,使用 NPM 安装:

 npm install dayjs

然后在项目代码中引入即可:

var dayjs = require('dayjs')

//import dayjs from 'dayjs' // ES 2015

dayjs().format()

<template>
    <div>
      <h3>显示格式化后的时间:</h3>
			<!-- 计算属性实现 -->
			<h4>计算属性:{{nowTime}}</h4>
			<!-- methods实现 -->
			<h4>methods实现:{{getNowTime()}}</h4>
			<!-- 过滤器实现 -->
			<h4>过滤器:{{time | timeFormater}}</h4>
			<!-- 过滤器实现(传参) -->
			<h4>过滤器(传参):{{time | timeFormater('YYYY-MM-DD')}}</h4>
    </div>
</template>
<script>
import dayjs from 'dayjs'
export default {
  data (){
    return {
      time:1648106069711//时间戳
    };
  },
  computed: {
				nowTime(){
					return dayjs(this.time).format('YYYY年MM月DD日 HH:mm:ss')
				}
			},
	methods: {
				getNowTime(){
					return dayjs(this.time).format('YYYY年MM月DD日 HH:mm:ss')
				}
			},
			//局部过滤器
	filters:{
				timeFormater(value,str='YYYY年MM月DD日 HH:mm:ss'){
					// console.log('value值',value)?
					return dayjs(value).format(str)
				},
			}
}
</script>

str参数这种写法是es6中的写法 ,即没有传这个参数时,默认是等号后边规定的值,有参数,就按照所传参数的值来操作。

效果5:

 

标签:Vue,return,dayjs,value,js,详解,参数,过滤器
From: https://www.cnblogs.com/mahmud/p/17182193.html

相关文章

  • Vue3 注册及使用全局方法
    新建map-func.js,在main.js中全局定义$mapFunc。map-func.jsfunctiongetLayer(layerId){ returnwindow.map.getLayer(layerId);}exportdefault{ getLayer};m......
  • vue 中数组值改变但页面未渲染问题
    这里想通过点击按钮打开抽屉,由于抽屉较多,这里我用数组存储了按钮<el-button@click="drawer[index]=true"type="primary"size="small">抽屉<el-dr......
  • vue 2.x使用视频插件dplayer
    前言:英文官网地址:https://dplayer.diygod.dev/中文官网地址:https://dplayer.diygod.dev/zh/正文:1、安装插件npminstallvue-dplayer-S2、配置插......
  • Java基础随笔(2)static静态详解
    1packagecom.chapter;23classBowl{4Bowl(intmarker){5System.out.println("Bowl+("+marker+")");6}78voidf1(int......
  • 08-Redis系列之-Redis布隆过滤器,MySQL主从,Django读写分离
    Redis实现布隆过滤器前言布隆过滤器使用场景比如有如下几个需求:原本有10亿个号码,现在又来了10万个号码,要快速准确判断这10万个号码是否在10亿个号码库中?解决办......
  • 07-Redis系列之-双写一致性,缓存详解和优化点
    双写一致性redis和mysql数据同步方案先更新数据库,再更新缓存(一般不用)先删缓存,再更新数据库(在存数据的时候,请求来了,缓存不是最新的,一般也不用)先更新数据库,再删缓存(请求......
  • Kubernetes(k8s)权限管理RBAC详解
    一、简介kubernetes集群相关所有的交互都通过apiserver来完成,对于这样集中式管理的系统来说,权限管理尤其重要,在1.5版的时候引入了RBAC(RoleBaseAccessControl)的权限......
  • 03-Redis系列之-高级用法详解
    慢查询生命周期我们配置一个时间,如果查询时间超过了我们设置的时间,我们就认为这是一个慢查询.慢查询发生在第三阶段客户端超时不一定慢查询,但慢查询是客户端超时的一个......
  • TextView(文本框)详解
    从本节开始我们来一个个讲解Android中的UI控件,本节给大家带来的UI控件是:TextView(文本框),用于显示文本的一个控件,另外声明一点,我不是翻译API文档,不会一个个属性的去扣,只学实......
  • 【基数排序算法详解】Java/Go/Python/JS/C不同语言实现
    说明基数排序(RadixSort)是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的......