前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Vue过滤器

Vue过滤器

作者头像
切图仔
发布2022-09-08 15:40:41
3810
发布2022-09-08 15:40:41
举报
文章被收录于专栏:生如夏花绚烂
过滤器

过滤器主要用在插值表达式({{ }})或v-bind中,在数据即将渲染时进行一些操作,如时间格式化。

全局过滤器

全局过滤器作用与所有VM对象 定义格式

代码语言:javascript
复制
Vue.filter(name,function(data,arg[]){
...
})

name:string :过滤器名称 data:过滤器管道符前面的数据 arg[]:可选自定义其他参数

使用方法 {{ data | 过滤器 }}

示例--全局过滤器时间格式化

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <div id="app">
        <P>过滤前:{{ date }}</P>
        <p>过滤后:{{ date | dateFormdat }}</p>
    </div>
    <script type="text/javascript" src='./vue.js'></script>
    <script type="text/javascript">
        //定义全局过滤器
        Vue.filter('dateFormdat',function(data){
            var newDate = new Date(data)
            var yy = newDate.getFullYear()
            var mm = newDate.getMonth()+1
            var dd = newDate.getDate()
            return `${yy}-${mm}-${dd}`
        })
        var vm = new Vue({
            el:"#app",
            data:{
                date:new Date()
            }
        })
    </script>
</body>
</html>

实现效果

带参数的过滤器

过滤器也可以传入参数 如下示例

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <div id="app">
        <P>过滤前:{{ date }}</P>

        <p>传参前:{{date | dateFormdat}}</p>
        <p>传参后:{{ date | dateFormdat("yyyy-mm-dd h:i:s") }}</p>
    </div>
    <script type="text/javascript" src='./vue.js'></script>
    <script type="text/javascript">
        //定义全局过滤器
        Vue.filter('dateFormdat',function(data,arg){
            var newDate = new Date(data)
            var yy = newDate.getFullYear()
            var mm = (newDate.getMonth()+1).toString().padStart(2,0)
            var dd = newDate.getDate().toString().padStart(2,0)
            
            if(arg && arg==="yyyy-mm-dd h:i:s"){
                var h = newDate.getHours();
                var m = newDate.getMinutes()
                var s = newDate.getSeconds()
                return `${yy}-${mm}-${dd} ${h}:${m}:${s}`
            }
            return `${yy}-${mm}-${dd}`
        })
        var vm = new Vue({
            el:"#app",
            data:{
                date:new Date()
            }
        })
    </script>
</body>
</html>
私有过滤器

私有过滤器作用与当前VM对象 定义格式

代码语言:javascript
复制
filters:{
   (过滤器名称)
    dateFomdat:function(){
            //
        }
}

示例

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <div id="app">
        <P>过滤前:{{ date }}</P>

        <p>传参前:{{date | dateFormdat}}</p>
        <p>传参后:{{ date | dateFormdat("yyyy-mm-dd h:i:s") }}</p>
    </div>
    <div id="app2">
        <p>传参后:{{ date | dateFormdat("yyyy-mm-dd h:i:s") }}</p>
    </div>
    <script type="text/javascript" src='./vue.js'></script>
    <script type="text/javascript">
        //定义全局过滤器
        Vue.filter('dateFormdat',function(data,arg){
            var newDate = new Date(data)
            var yy = newDate.getFullYear()
            var mm = (newDate.getMonth()+1).toString().padStart(2,0)
            var dd = newDate.getDate().toString().padStart(2,0)
            
            if(arg && arg==="yyyy-mm-dd h:i:s"){
                var h = newDate.getHours();
                var m = newDate.getMinutes()
                var s = newDate.getSeconds()
                return `${yy}-${mm}-${dd} ${h}:${m}:${s}`
            }
            return `${yy}-${mm}-${dd}`
        })
        var vm = new Vue({
            el:"#app",
            data:{
                date:new Date()
            }
        })

        var vm2 = new Vue({
            el:"#app2",
            data:{
                date:new Date()
            },
            filters:{
                dateFormdat:function(data){
                    var newDate = new Date(data)
                    var yy = newDate.getFullYear()
                    var mm = (newDate.getMonth()+1).toString().padStart(2,0)
                    var dd = newDate.getDate().toString().padStart(2,0)
                    return `私有过滤器${yy}-${mm}-${dd}`
                }
            }
        })
    </script>
</body>
</html>

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-06-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 过滤器
  • 全局过滤器
  • 私有过滤器
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档