zoukankan      html  css  js  c++  java
  • Vue之过滤器

    过滤器基础

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

    <!-- 在双花括号中 -->
    {{ message | capitalize }}
    
    <!-- 在 `v-bind` 中 -->
    <div v-bind:id="rawId | formatId"></div>

    过滤器函数总接收表达式的值 (之前的操作链的结果) 作为第一个参数并且可以串联:

    {{ message | filterA | filterB }}

    过滤器是 JavaScript 函数,因此可以接收参数:这里,filterA 被定义为接收三个参数的过滤器函数。其中 message 的值作为第一个参数,普通字符串 'arg1' 作为第二个参数,表达式 arg2 的值作为第三个参数。

    {{ message | filterA('arg1', arg2) }}

    定义和语法

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

    举例代码

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8" />
            <title>过滤器</title>
            <script type="text/javascript" src="../js/vue.js"></script>
            <script type="text/javascript" src="../js/dayjs.min.js"></script>
        </head>
        <body>
            <!-- 准备好一个容器-->
            <div id="root">
                <h2>显示格式化后的时间</h2>
                <!-- 计算属性实现 -->
                <h3>现在是:{{fmtTime}}</h3>
                <!-- methods实现 -->
                <h3>现在是:{{getFmtTime()}}</h3>
                <!-- 过滤器实现 -->
                <h3>现在是:{{time | timeFormater}}</h3>
                <!-- 过滤器实现(传参) -->
                <h3>现在是:{{time | timeFormater('YYYY_MM_DD') | mySlice}}</h3>
                <h3 :x="msg | mySlice">wangxq</h3>
            </div>
            <!-- vm2的容器,可以使用全局过滤器mySlice -->
            <div id="root2">
                <h2>{{msg | mySlice}}</h2>
            </div>
        </body>
    
        <script type="text/javascript">
            Vue.config.productionTip = false
            //全局过滤器
            Vue.filter('mySlice',function(value){
                return value.slice(0,4)
            })
            
            const vm1=new Vue({
                el:'#root',
                data:{
                    //时间戳,可以在浏览器控制台输入Date.now()获取当前时间戳
                    time:1632363408760,
                    msg:'你好,wangxq'
                },
                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,str='YYYY年MM月DD日 HH:mm:ss'){
                        // console.log('@',value)
                        return dayjs(value).format(str)
                    }
                }
            })
            // 这里想说明的一点是:定义局部过滤器,只能当前vm实例使用,当多个vm实例都要使用该过滤器,最好定义为全局过滤器
            const vm2=new Vue({
                el:'#root2',
                data:{
                    msg:'hello,wangxq!'
                }
            })
        </script>
    </html>

    运行效果:

  • 相关阅读:
    程序员应该看的书
    linux下grep命令详解
    apache基本配置
    shell脚本从windows下发送到linux下运行失败的问题
    nginx服务器的安装和配置基础
    linux下ps命令用法
    apache的python部署
    《我刀刻我心——关羽往事》新书发布会在京举行
    C++图书中的王者
    C++应用程序性能优化
  • 原文地址:https://www.cnblogs.com/ftx3q/p/15323159.html
Copyright © 2011-2022 走看看