Vue.js--过滤器

Vue.js支持在 {{}} 插值的尾部添加一个管道符“(|)”对数据进行过滤,经常用于格式化文本,比如字母全部大写、货币千位使用逗号分隔等。过滤的规则是自定义的,通过给Vue实例添加选项filters来设置。

示例:对时间进行格式化处理

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <script src="https://unpkg.com/vue/dist/vue.js"></script>
    <title>Document</title>
</head>
<body>
    <div id="myApp">
        {{date | formatDate}}
    </div>
    <script>
        //在月份、日期、小时等小于10时前面补0
        var padDate = function (value) {
            return value < 10 ? '0' + value : value;
        }

        var app = new Vue({
            el: '#myApp',
            data: {
                date: new Date()
            },
            filters: {
                formatDate: function (value) {
                    var date = new Date(value);
                    var year = date.getFullYear();
                    var month = padDate(date.getMonth() + 1);
                    var day = padDate(date.getDate());
                    var hours = padDate(date.getHours());
                    var minutes = padDate(date.getMinutes());
                    var seconds = padDate(date.getSeconds());
                    //返回数据
                    return year + '-' + month + '-' + day + '-' + hours + ':' + minutes + ':' + seconds;
                }
            },
            mounted: function(){
                var _this = this;//声明一个变量指向Vue实例的this,保证作用域一致
                this.timer = setInterval(function(){
                    _this.date = new Date();//修改数据date
                }, 1000);
            },

            beforeDestroy: function(){
                if(this.timer){
                    clearInterval(this.timer);//Vue实例清除前,销毁定时器
                }
            }
        });
    </script>
</body>
</html>

在这里插入图片描述
注意:过滤器也可以串联,而且可以接收参数,例如:

<!-- 串联 -->
{{ message | filterA | filterB }}
<!-- 接受参数:arg1和arg2将分别传给过滤器的第二个和第三个参数,因为第一个是数据本身 -->
{{ message | filterA('arg1, 'arg2') }}

示例:求四次方:

<!--过滤器串联 -->
<div id="app">
    <h1>{{num}}的四次方是:{{num | aquare | cube}}</h1>
    <input v-model="num">
</div>
<script>
    var vm = new Vue({
        el: '#app',
        data: {
            num: 10
        },
        filters: {
            aquare: function(value){
                return value * value;
            },
            cube: function (value) {
                return value * value;
            }
        }
    });
</script>

在这里插入图片描述

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值