vue学习之过滤器_filter

本文详细介绍了Vue.js中过滤器的使用,包括全局过滤器和局部过滤器。在过滤器中,`this`指向`window`而非Vue实例。通过示例代码展示了过滤器如何接收参数,以及过滤器链的执行过程。同时,文章讨论了过滤器中的参数传递和返回值对页面显示的影响,并强调了过滤器不会被挂载到当前实例上。
摘要由CSDN通过智能技术生成

过滤器

过滤器分全局过滤器和局部过滤器。和自定义指令一样,过滤器对应的函数中的this是window(无论是全局的还是局部的),而不是当前vue的实例。

<!DOCTYPE html>
<html>

<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>

<body>
  <div id="app">
    <!-- 过滤器可以传递参数 -->
    <h1>{{name|money(name,age)}}</h1>

    <h1>{{name|money(name,age)|newName}}</h1>
  </div>
  <script src="../node_modules/vue/dist/vue.js"></script>
  <script>
    /* 
     过滤器:全局过滤器和局部过滤器
    */
   // 全局过滤器
   Vue.filter('money', function(){
     // 过滤器中的this是window
     console.log(this); // window
     
     console.log(arguments);  // arguments的第一项是 管道符 前面表达式对应的值,后面依次是使用过滤器时传递的实参
     // 过滤器和计算属性一样,一定要return一个值
     return '我是过滤器'; // 页面上最后展示的是过滤器return的值
   });

   Vue.filter('newName', function(val){
     console.log(val); // 获取的是前面过滤器return的值

     return '我是新的过滤器'
   })
    let vm = new Vue({
      el: '#app',
      data: {
        name: '测试',
        age:100
      },

      // 局部过滤器
      filters: { 
        // 过滤器中的this是window,而不是当前实例;过滤器不会被挂载到当前实例上
        newName(val) { 
          // 有私有的优先使用私有的
          console.log(val);
          console.log(this); // window
          return '我是私有过滤器'
        }
      }
    });
     // 注意:过滤器不会被挂载到当前实例上 
     console.log(vm.newName); // undefined
  </script>
</body>

</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值