首页 > 其他分享 >Vue2入门之超详细教程十六-过滤器

Vue2入门之超详细教程十六-过滤器

时间:2024-01-25 11:01:41浏览次数:22  
标签:return 之超 timeFormater format value Vue2 time 过滤器

Vue2入门之超详细教程十六-过滤器

1、简介

过滤器

  • 定义:对要显示的数据进行特点格式化后再显示(适用于一些简单逻辑的处理)
  • 语法:
    • 1.注册过滤器:Vue.filter(name,callback)或 new Vue(filters:{})
    • 2.使用过滤器:{{ xxx | 郭琪琪名}} 或 v-bind:属性 = "xxx | 过滤器名称"
  • 备注:
    • 1.过滤器也可以接收额外参数、多个过滤器也可以串联
    • 并没有改变原本的数据,是产生新的对应的数据

学习Vue之前最后会一些HTML和CSS的基础知识,HTML基础知识 传送门,CSS基础知识 传送门

2、过滤器

1. 不传参数过滤器

实现一个时间戳转换过滤器

<h3>过滤器不传参实现:{{time | timeFormater}}</h3>
data(){
    return {
        time:Date.now(),
        msg:'你好,博客园'
    }
},
// 局部过滤器
filters:{
    timeFormater(value){
        return dayjs(value).format('YYYY-MM-DD HH:mm:ss')
    }
}

当插值语法解析time前,会先把time传给timeFormater,timeFormater默认接收time作为value,对time进行格式化后展示

2.传参数过滤器

上面的过滤有一些小问题,就是时间格式是固定的,当我们想要别的格式时,还需要改源码,实在不方便,我们来修改一下

<h3>过滤器传参实现:{{time | timeFormater('YYYY-MM-DD HH:mm:ss')}}</h3>
data(){
    return {
        time:Date.now(),
        msg:'你好,博客园'
    }
},
// 局部过滤器
filters:{
    timeFormater(value,format='YYYY年MM月DD日 HH:mm:ss'){
        return dayjs(value).format(format)
    }
}

调用timeFormater时我们传入了自定义的格式,过滤器第一个参数默认是被过滤的数据,第二个参数才是我们传入的内容

3.多组过滤器

<h3>多个过滤器:{{time | timeFormater |mySlice}}</h3>
data(){
    return {
        time:Date.now(),
        msg:'你好,博客园'
    }
},// 局部过滤器
filters:{
    timeFormater(value,format='YYYY年MM月DD日 HH:mm:ss'){
        return dayjs(value).format(format)
    },
    mySlice(value){
        return value.slice(0,4)
    }
}

timeFormater格式化时间戳,mySlice切片只显示前4位数字

4.v-bind使用过滤器

<h3 :x="msg | mySlice">博客园</h3>
data(){
    return {
        time:Date.now(),
        msg:'你好,博客园'
    }
},
// 局部过滤器
filters:{
    mySlice(value){
        return value.slice(0,4)
    }
}

image-20240106231406538

3、完整代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script type="text/javascript" src="../js/development/vue.js"></script>
    <script type="text/javascript" src="../js/development/dayjs.min.js"></script>
</head>
<body>
    <div id="root">
        <h2>显示格式化后的时间</h2>
        <h3>computed实现:{{fmtTime}}</h3>
        <h3>methods实现:{{ getFmtTime() }}</h3>
        <h3>过滤器不传参实现:{{time | timeFormater}}</h3>
        <h3>过滤器传参实现:{{time | timeFormater('YYYY-MM-DD HH:mm:ss')}}</h3>
        <h3>多个过滤器:{{time | timeFormater |mySlice}}</h3>
        <h3 :x="msg | mySlice">博客园</h3>
    </div>
</body>
<script type="text/javascript">
    // 全局过滤器
    Vue.filter('mySlice',function(value){
        return value.slice(0,4)
    })
    new Vue({
        el:'#root',
        data(){
            return {
                time:Date.now(),
                msg:'你好,博客园'
            }
        },
        computed:{
            fmtTime(){
                return dayjs(this.time).format('YYYY-MM-DD HH:mm:ss')
            }
        },
        methods:{
            getFmtTime(){
                return dayjs(this.time).format('YYYY-MM-DD HH:mm:ss')
            }
        },
        // 局部过滤器
        filters:{
            timeFormater(value,format='YYYY年MM月DD日 HH:mm:ss'){
                return dayjs(value).format(format)
            },
            mySlice(value){
                return value.slice(0,4)
            }
        }
    })
</script>
</html>

4、过程中遇到的错误及解决办法

以上代码中我们使用了另一个第三方库中的方法即dayjs()在使用它前我们需要先引入一下它

两种方式引入:

1.直接引入

<script src="https://cdn.bootcdn.net/ajax/libs/dayjs/1.11.9/dayjs.min.js"></script>

2.本地引入

本地引入需要先下载到本地

在浏览器中访问:https://cdn.bootcdn.net/ajax/libs/dayjs/1.11.9/dayjs.min.js

然后点击数遍右键,选择另存为

image-20240106231823187

存到本地后,在进行引入

<script type="text/javascript" src="../js/development/dayjs.min.js"></script>

标签:return,之超,timeFormater,format,value,Vue2,time,过滤器
From: https://www.cnblogs.com/lirongyang/p/17949896

相关文章

  • Vue2
    Vue2createApp:每个应用都是通过createApp函数创建的create:页面渲染前执行mount:页面渲染后执行v-bind:支持额外的值类型如字符串、对象或数组<buttonv-bind:disabled="isDisabled">Biwin</button><!--简写--><button:disabled="isDisabled">Biwin</bu......
  • vue2 组件的使用
    基本使用写组件......
  • vue2项目使用jsencrypt.js实现分段加密解密
    安装:npminstall jsencrypt安装:npminstall js-base64组件:demo.vue<template></template><script>import{SM4Encrypt,SM4Decrypt}from'@/assets/des.js'importtestImportJsonfrom'@/assets/data.json'exportdefault{......
  • Java web的过滤器Filter
    注:来自《JavaWeb入门经典》一书,仅供参考和学习。1.过滤器的核心对象2.创建并配置过滤器......
  • Vue笔记(基于Vue2)
    Vue笔记(基于Vue2)笔记所用版本为VueCLIv5.0.8,对个人开发项目中所用到的部分进行记录,除Vue外可能含部分其他技术的内容查看下方目录来确定有无需要的内容目录Vue笔记(基于Vue2)安装目录构成常用插件ElementUI(页面组件库)axiosi18n(多语言)moment(时间日期)UUID(通用唯一标......
  • Vue3与Vue2的深度对比:你不可不知的差异!
    Vue3框架的优点特点首次渲染更快diff算法更快内存占用更少打包体积更小更好的Typescript支持CompositionAPI 组合API一、生命周期对于生命周期来说,整体上变化不大,只是大部分生命周期钩子名称上+“on”,功能上是类似的。不过有一点需要注意,Vue3在组合式API(CompositionAPI,下......
  • 在vue2中使用leaflet.AnimatedMarker来移动某个目标
    需求是:点击某个按钮后让扫描仪沿着某条线移动进行扫描效果:  扫描仪是沿着河流移动的,河流的生成方式通过geojson数据生成,geojson里包含了河流的一些点位的经纬度,扫描仪根据经纬度来移动leaflet:1.9.4 leaflet.AnimatedMarker:1.0.0 1.引入 importLfrom'leaf......
  • 后端登陆的过滤器
    后端登陆的过滤器packagecom.itheima.filter;importcom.google.gson.Gson;importcom.google.gson.JsonObject;importcom.itheima.pojo.Result;importcom.itheima.utils.JwtUtils;importlombok.extern.slf4j.Slf4j;importorg.springframework.boot.configurationpro......
  • vue2中使用v-selectpage插件 搜索并分页
    <v-selectpagedata="/api/intrusionevent/lists"v-model="temp.event_id"key-field="id"show-field="description"search-field="de......
  • 记一个vue2中使用路由时,在同一个页面跳转,但是url参数不同,不会重新渲染页面的问题
    vue2中使用路由时,页面自己跳转自己,但是携带的参数不一样预期想要的结果是:感冒2会跟随着url的参数进行变化,但是并没用 解决方法: 在App.vue这个页面中的router-view添加  :key="$route.fullPath"结果在自己跳转自己之后会刷新页面 达成:参考:https://blog.csdn.ne......