1-6 基本用法-过滤器

目录:

  • 简介
  • 内置过滤器
  • 自定义过滤器(全局过滤器和局部过滤器)

一、简介

用来过滤模型数据,在显示之前进行数据处理和筛选

语法:

{{data | filter1(参数) | fileter2(参数)}}

二、内置过滤器

在vue1.0中内置过滤器,如:

currecy、uppercase、lowercase
limitBy、orderBy、filterBy...

在Vue2.0中已经删除了所有内置过滤器,全部被废除。Vue1.0迁移至Vue2.0解决内置过滤器的办法:

  • 使用第三方工具库,如:loadash(下划线库,每个过滤器都是以下划线开头)、data-fn日期格式化、accounting.js货币格式化
  • 使用自定义过滤器

三、自定义过滤器

3.1、过滤器分类

  • 全局过滤器:所有的Vue实例中都可以用
  • 局部过滤器:只有在当前实例中使用

3.2、自定义全局过滤器

使用全局方法:Vue.filter 定义全局过滤器,语法如下:

#Vue.filter(id,[definition]) => Vue.filter(过滤器ID,过滤器函数)

//注册成全局过滤器
Vue.filter('my-filter',function(value){
       //返回处理值
})
简写:
Vue.filter('my-filter',value => {
       //返回处理值
})

//getter,返回已注册的过滤器
var myfilter = Vue.filter('my-filter')

实例:

<body>
    <div id="box">
        <h3>{{8 | addZero}}</h3> <!--调用过滤器addZero-->
        <h3>{{12.345678 | number(3)}}</h3>
        <h3>{{currentTime | date}}</h3>
    </div>

    <script type="text/javascript" src="../js/vue.js"></script>
    <script>
        /***
         *定义全局过滤器
         */
        Vue.filter('addZero',function(data)=> {   
            return data<10?'0' + data:data; //表达式语法: 判断条件? v1:v2,满足条件输出v1,不满足输出v2
        });
        Vue.filter("number",(data,n) => { //(data,n) => {} 相当于 function(data,n){}
            //(data,n) => 第1个值data表示你需要操作的值,后面的参数表示你为这个过滤器传递参数,可能还有n多个参数
            return data.toFixed(n);
        });
        Vue.filter('date',data => {  //data => {} 相当于 function(data){}
            let d = new Date(data);
            return d.getFullYear()+'-'+d.getMonth()+'-'+d.getDate();
        });
        //定义Vue实例
        new Vue({
            el: "#box",
            data:{
                currentTime:Date.now()
            }
        });
    </script>
</body>

知识点整理:

过滤器函数简写:

//传入单个参数
Vue.filter('过滤器ID',function(data){})  简写:Vue.filter('过滤器ID',data => {}) 

//传入多个参数
Vue.filter('过滤器ID',function(data,n){})  简写: Vue.filter('过滤器ID',(data,n) => {})

过滤器传值说明:

//传入单个参数
<h3>{{8 | addZero}}</h3>
//过滤器写法:
Vue.filter('addZero',data => {  //8传给data
    // 返回过滤器的值
});

//传入多个参数
<h3>{{12.345678 | number(3)}}</h3>
//过滤器写法:
Vue.filter('number',(data,n) => {  //{{12.345678 | number(3)}} => 12.345678(操作的值) 传给data,3(过滤器中的参数)传给n
    // 返回过滤器的值
});

说明:
(data,n,...) => {}:第个参数表示你操作的值,后面的值依次表示你为这个过滤器传递后面的参数,这个参数可能会有n个,甚至更多。

3.3、自定义局部过滤器

局部过滤器,在vue的实例中filters的选择,定义过滤器,定义过滤器的语法跟全局过滤器是一样的。

<body>
    <div id="box">
        <!--调用局部过滤器-->
        <h3>{{12.345678 | number(3)}}</h3>
    </div>

    <script type="text/javascript" src="../js/vue.js"></script>
    <script>
        //定义Vue实例
        new Vue({
            el: "#box",
            data:{
            },
            filters:{  //定义局部过滤器,这边可以定义多个,语法跟全局过滤器一样
                number:(data,n) => {
                    return data.toFixed(n);
                }
            }
        });
    </script>
</body>

至此Vue.js的过滤器已经学完啦。

posted @ 2020-03-02 10:40  帅丶高高  阅读(346)  评论(0)    收藏  举报