• 382 vue过滤器:全局过滤器,局部过滤器,moment 插件,过滤器参数,全局和局部的使用区别


    过滤器

    1. **概念 **
    • vue 中的过滤器(filter) : 数据格式化 ,
    • 也就是说,让数据按照我们规定的一种格式输出
    • 比如 : 对于日期来说,将日期格式化转化为 年-月-日 小时:分:秒 格式的过程
     // 直接显示
     <h1>{{ date  }}</h1>
     显示 :   2019-01-11T10:11:19.566Z
     不是我们想要的
     我们想要的 : 2019-01-11 18-11-53
    
    1. 全局过滤器 和 局部过滤器
    • 说明 : 通过全局方式创建的过滤器,在任何一个 Vue 实例中都可以使用 (一般情况下,为了项目方便管理,都是一个 vue 实例)
    • 注意点: 使用全局过滤器的时候,应该先创建全局过滤器,再创建 Vue 实例
    • 局部创建的过滤器 只能在当前 vue 实例中使用
    1. 怎么注册 全局过滤器
    // 第一个参数 : 过滤器的名字
    // 第二个参数 : 是一个回调函数,只要使用过滤器的时候,这个回调函数就会执行
    ///           通过回调函数的返回值得到格式化后的数据
    Vue.filter('date', res => {
      return '嘻嘻'
    })
    
    1. **使用过滤器 示例 **
    // 组件
     <h1>时间戳-格式 {{ date2 | date }}</h1>
    
    // js
      Vue.filter('date', res => {
             return `${res.getFullYear()}-${res.getMonth()}-${res.getDate()} ${res.getHours()}:${res.getMinutes()}:${res.getSeconds()}`
          })
    
    1. moment 插件
    • moment 地址

    • 使用

      1. 安装 : `npm i moment`
      2. 引入 :
      3. 使用
      
    • 日期 => 指定格式 moment(res).format('YYYY-MM-DD HH-mm-ss')

    • 时间戳 => 指定格式 moment(res).format('YYYY-MM-DD HH-mm-ss')

    • // 全局
      Vue.filter('date', res => {
        return moment(res).format('YYYY-MM-DD HH-mm-ss')
      })
      
    1. 参数问题
    • 示例
    <h1>时间戳-格式 {{ date2 | date('YYYY-MM-DD HH-mm-ss',888) }}</h1>
    
    // 默认值
    Vue.filter('date', (res, format = 'YYYY-MM-DD', arg) => {
      console.log(arg)
      return moment(res).format(format)
    })
    
    1. 局部过滤器

      在 vm 的配置项里写一个 filters
      对应的是一个对象

     filters: {
        date(res, format = 'YYYY-MM-DD', arg) {
          return moment(res).format(format)
        }
      }
    

    10-过滤器的基本使用.html

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8" />
        <title>Document</title>
    </head>
    
    <body>
        <!-- 
           过滤器 : 格式化文本工具
           作用 : 处理不合适的数据, 处理好之后, 返回给你合适的数据
    
           怎么使用过滤器? 
            1. 先注册
              - 全局过滤器 : 所有的vue实例里都 可以使用
              - 局部过滤器 (私有) : 只能在当前注册的实例里使用
            2. 再使用: '管道'| 
               格式: 要处理的数据 | 过滤器
         -->
        <div id="app">
            <h1>{{ date | dateFilter }}</h1>
        </div>
    
        <script src="./vue.js"></script>
        <script>
            // 注册全局过滤器
            // 注意点
            // 1. 注册全局过滤器,一定要在实例vue之前注册 【因为下面要用到构造函数Vue,而且注册好了,下面所有的Vue实例都可以使用。】
            // 2. 过滤器要有返回值, 返回的值就是过滤处理好的值
    
            // 参数1 : 过滤器的名字
            // 参数2 : 回调函数 当使用过滤器的时候
            Vue.filter('dateFilter', () => '哈哈')
    
            const vm = new Vue({
                el: '#app',
                data: {
                    date: new Date()
                }
            })
        </script>
    </body>
    
    </html>
    

    11-过滤器的处理日期.html

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8" />
        <title>Document</title>
    </head>
    
    <body>
        <!-- 
           过滤器 : 格式化文本工具
           作用 : 处理不合适的数据, 处理好之后,返回给你合适的数据
           怎么使用过滤器? 
            1. 先注册
              - 全局过滤器 : 所有的vue实例里都 可以使用
              - 局部过滤器 : 只能在当前注册的实例里使用
            2. 再使用  '管道'  | 
               格式: 要处理的数据  | 过滤器
         -->
        <div id="app">
            <h1>{{ date | dateFilter }}</h1>
        </div>
    
        <script src="./vue.js"></script>
        <script>
            // 注册全局过滤器
            // 注意点
            // 1. 注册全局过滤器,一定要在实例vue之前注册
            // 2. 过滤器要有返回值, 返回的值就是过滤处理好的值
            // 参数1 : 过滤器的名字
            // 参数2 : 回调函数 当使用过滤器的时候
            //          参数 : 要处理的数据
            Vue.filter('dateFilter', res => {
                return ` ${ res.getFullYear() } - ${ res.getMonth()+1 }`
            })
    
            const vm = new Vue({
                el: '#app',
                data: {
                    date: new Date()
                }
            })
        </script>
    </body>
    
    </html>
    

    12-过滤器配合moment使用.html

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
    
    </head>
    
    <body>
        <!-- 
         处理日期  配合 moment 
         1. 安装 : npm i moment
         2. 引入 
         3. 使用
       -->
    
        <div id="app">
            <h1>{{ date | dateFilter }}</h1>
            <h1>{{ date1 | dateFilter }}</h1>
        </div>
    
        <script src="./vue.js"></script>
        <script src="./node_modules/moment/moment.js"></script>
        <script>
            // 注册过滤器
            Vue.filter('dateFilter', res => {
                return moment(res).format('YYYY-MM-DD HH:mm:ss')
            })
    
            const vm = new Vue({
                el: '#app',
                data: {
                    date: new Date,
                    date1: +new Date
                }
            })
        </script>
    </body>
    
    </html>
    

    13-过滤器的参数.html

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
    
    </head>
    
    <body>
        <!-- 
         处理日期  配合 moment 
         1. 安装 : npm i moment
         2. 引入 
         3. 使用
       -->
    
        <div id="app">
            <!-- 过滤器是函数,当然可以传参 -->
            <h1>{{ date | dateFilter('YYYY-MM-DD HH:mm:ss') }}</h1>
            <h1>{{ date1 | dateFilter }}</h1>
            <!-- <h1>{{ date1 | dateFilter('aa','bb') }}</h1> -->
        </div>
    
        <script src="./vue.js"></script>
        <script src="./node_modules/moment/moment.js"></script>
        <script>
            // 注册过滤器 【添加默认参数。】
            Vue.filter('dateFilter', (res, fStr = 'YYYY-MM-DD') => moment(res).format(fStr))
    
            const vm = new Vue({
                el: '#app',
                data: {
                    date: new Date,
                    date1: +new Date
                }
            })
        </script>
    </body>
    
    </html>
    

    14-局部 过滤器.html

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
    
    </head>
    
    <body>
        <!-- 
            注册局部过滤器
          -->
        <div id="app">
            <h1>{{ date | dateFilter }}</h1>
        </div>
    
        <script src="./vue.js"></script>
        <script src="./node_modules/moment/moment.js"></script>
        <script>
            // 全局
            // Vue.filter('dateFilter', res => {
            //   return '哈哈'
            // })
    
            // 局部过滤器是注册在vue实例里面
            // filters 【属性】
    
            const vm = new Vue({
                el: '#app',
                data: {
                    date: new Date()
                },
                filters: {
                    dateFilter(res) {
                        return moment(res).format('YYYY-MM')
                    }
                }
            })
        </script>
    </body>
    
    </html>
    

    15-全局和局部的使用效果/区别.html

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
    
    </head>
    
    <body>
    
        <!-- vm1管理的边界 -->
        <div id="app1">
            <!-- <h1>{{ date1 | dateFilter }}</h1>     -->
            <h1>{{ date1 | dateF }}</h1>
        </div>
        <!-- vm2管理的边界 -->
        <div id="app2">
            <!-- <h1>{{ date2 | dateFilter }}</h1>  -->
            <!-- dateF 在 app2中无法使用-->
            <h2>{{ date2 | dateF }}</h2>
        </div>
    
        <script src="./vue.js"></script>
        <script src="./node_modules/moment/moment.js"></script>
        <script>
            // 注册一个全局过滤器
            Vue.filter('dateFilter', res => {
                return moment(res).format('YYYY-MM-DD')
            })
    
            // vm1
            const vm1 = new Vue({
                    el: '#app1',
                    data: {
                        date1: new Date()
                    },
                    filters: {
                        dateF(res) {
                            return moment(res).format('YYYY')
                        }
                    }
                })
                // vm2
            const vm2 = new Vue({
                el: '#app2',
                data: {
                    date2: new Date()
                }
            })
        </script>
    </body>
    
    </html>
    
  • 相关阅读:
    日常点滴
    Django基础之forms组件中的ModelForm组件
    你想了解的轮询、长轮询和websocket都在这里了
    python并发编程之协程
    聊聊五大IO模型
    python并发编程之线程
    网络编程
    python并发编程之进程
    python中的异常处理
    flask实现文件的上传
  • 原文地址:https://www.cnblogs.com/jianjie/p/12508441.html
Copyright © 2020-2023  润新知