zoukankan      html  css  js  c++  java
  • Vue学习之路第十八篇:私有过滤器的使用

    1、上篇已经介绍了全局过滤器的使用,“全局”顾名思义就是一次定义处处使用,可以被一个页面里不同的Vue对象所使用,如下代码所示:

    <body>
        <div id="app1">
            app1的时间格式化:{{dataStr | formatData}}
        </div>
    
        <div id="app2">
            app2的时间格式化:{{dataStr | formatData}}
        </div>
    
        <script type="text/javascript">
        
            Vue.filter('formatData',function(dataStr){
                var newDate = new Date();
                var y = newDate.getFullYear();
                var m = newDate.getMonth() + 1;
                var d = newDate.getDate();
                var hh = newDate.getHours();
                var mm = newDate.getMinutes();
                var ss = newDate.getSeconds();
                return `${y}-${m}-${d} ${hh}:${mm}:${ss}`;
            });
            var vm1 = new Vue({
                el : "#app1",
                data : {
                    dataStr : new Date()
                },
                methods : {}
            });
            var vm2 = new Vue({
                el : "#app2",
                data : {
                    dataStr : new Date()
                },
                methods : {}
            });
        </script>
    </body>

    这里定义了两个Vue对象分别绑定id为div1和div2的元素,在这两个元素作用域里使用了全局过滤器formatData,运行的效果是一样的,这就是全局过滤器。但是有的时候我们想定义一个专属于某个Vue对象的过滤器,不允许别的对象访问,这个时候我们就需要定义私有过滤器。

    2、私有过滤器

    <body>
        <div id="app1">
            app1的时间格式化:{{dataStr | formatData}}
        </div>
    
        <div id="app2">
            app2的时间格式化:{{dataStr | formatData}}
        </div>
    
        <script type="text/javascript">
    
            var vm1 = new Vue({
                el : "#app1",
                data : {
                    dataStr : new Date()
                },
                methods : {},
                filters:{
                    formatData:function(dataStr){
                        var newDate = new Date();
                        var y = newDate.getFullYear();
                        var m = newDate.getMonth() + 1;
                        var d = newDate.getDate();
                        var hh = newDate.getHours();
                        var mm = newDate.getMinutes();
                        var ss = newDate.getSeconds();
                        return `${y}-${m}-${d} ${hh}:${mm}:${ss}`;
                    }
                }
            });
            var vm2 = new Vue({
                el : "#app2",
                data : {
                    dataStr : new Date()
                },
                methods : {}
            });
        </script>
    </body>

    私有过滤器的定义需要放在Vue对象里,属性名为:filters,其值为对象,对象内容为方法,其中方法名为私有过滤器的名称,方法参数是需要处理的数据,返回值为处理之后的展示值,也可以同时定义多个私有过滤器。

    运行结果如下:

    id为app1的时间被格式化成功,app2的没有被格式化,说明私有化的过滤器不允许被其他Vue对象调用。

    每天进步一点点!

  • 相关阅读:
    词法分析程序
    0909关于编译原理
    深度学习中图像检测的评价标准
    【 记忆网络 1 】 Memory Network
    ssm又乱码
    百度地图标注没了
    Fragment与Activity交互(使用Handler)
    在android里用ExpandableListView实现二层和三层列表
    java中outer的使用
    android中使用Http下载文件并保存到本地SD卡
  • 原文地址:https://www.cnblogs.com/shibin90/p/10375888.html
Copyright © 2011-2022 走看看