Vue学习日记之过滤器

  过滤器是什么?相信稍微有点编程基础的人都知道,过滤器是指对某些数据或内容,经过一段处理之后再输出显示。

  同样的再Vue中也存在着过滤器。

在Vue中过滤器分为两种类型,一种为公有过滤器,另一种为私有过滤器,过滤器只能在两个地方使用,一种是插值表达式{{}},一种是v-bind式中,使用管道符"|"与输入的数据分割。

 

1、公有过滤器

    公有过滤器指的是,它由Vue定义,可以用于任何Vue实例。

    格式:Vue.filter("filter",function(str,arguments[]){.....return newStr})

  • filter是过滤器的名称
  • str即回调函数的第一个参数,是需要过滤的数据名称。
  • 过滤器回调函数中必须显式的返回一个值,这个值是最终呈现的值,也就是过滤好的值。
  • 过滤器同样可以传入其他参数。

  使用方法,在插值表达式和v-bind中都是使用管道符与输入的数据分隔开。

  例如:

  • {{msg | msgFilter}}
  • v-bind:value="msg | msgFilter"

看个例子:

  <div id="app" >
      <h3>原字符串:{{msg}}</h3>
      <h3>过滤后的字符串:</h3>
      <input style="width: 500px" :value="msg| msgFormat('你','还')">
      <h3>{{msg | msgFormat('它','也')}}</h3>
  </div>
<script>
//定义了一个公有的过滤器
Vue.filter('msgFormat',function (msg,str,str1) {  
   return msg.replace(/我/g,str+str1);
   });
   Vue.filter('msgFormat1',function (msg) {
       return msg+',后天的我喝汤';
   });
   var vm=new Vue({
       el:"#app",
       data:{
           msg:"今天的我吃了饭,明天的我不吃饭"
       },
       methods:{

       }
   })
</script>

运行结果:

  我们使用Vue.filter定义了一个过滤器,data中的msg数据在经过,过滤器,之后才输出。在过滤器的回调函数中第一个参数msg为要过滤的数据,剩下的参数可加可不加,要千万记住过滤器的回调函数必须要有一个显式返回的数据,这个数据为经过过滤后的数据。

 

1.1、使用多个过滤器

 <div id="app" >
      <h3>原字符串:{{msg}}</h3>
      <h3>过滤后的字符串:</h3>
      <input style="width: 500px" :value="msg| msgFormat('你','还') | msgFormat1">
      <h3>{{msg | msgFormat('它','也') | msgFormat1}}</h3>
  </div>
 <script> 
 Vue.filter('msgFormat',function (msg,str,str1) {  //过滤器1
   return msg.replace(/我/g,str+str1);
   });
   Vue.filter('msgFormat1',function (msg) {   //过滤器2
       return msg+',后天的我喝汤';
   });
   var vm=new Vue({
       el:"#app",
       data:{
           msg:"今天的我吃了饭,明天的我不吃饭"
       },
       methods:{

       }
   })
</script>

运行结果:

使用多个过滤器特别简单,只需要使用管道符"|"分隔多个过滤器即可。

 

2、私有过滤器

  私有过滤器指的是,由Vue实例进行定义,只能应用于这个Vue实例指定的区域中。

  格式:在Vue实例中定义filters:{过滤器名称:function(str,arguments[]){.....  return newStr} }

  • 同样的,str是需要过滤的值
  • 需要显式的返回一个值newStr用于输出
  • 可传入其他函数
 <div id="app" >
      <h3>原字符串:{{msg}}</h3>
      <h3>过滤后的字符串:</h3>
      <input style="width: 500px" :value="msg| msgFormat('你','还') | msgFormat1">
      <h3>{{msg | msgFormat('它','也') | msgFormat1}}</h3>
  </div>
<script>
var vm=new Vue({
       el:"#app",
       data:{
           msg:"今天的我吃了饭,明天的我不吃饭"
       },
       methods:{

       },
       filters:{
           msgFormat:function (msg,str,str1) {
               return msg.replace(/我/g,str+str1);
           },
           msgFormat1:function (msg) {
               return msg+',私有过滤器';
           }
       }
   })
</script>

运行结果:

私有过滤器在Vue实例中定义,创建一个filters:{}对象,在此对象中创建过滤器键值对的名称和函数,如:msgFormat:function(msg,str){....  return nerStr}。

 

2.1、使用多个过滤器

  从上述例子中可以看出,私有过滤器使用多个过滤器跟公有过滤器的=使用多个过滤器的方法是一样的,同样是使用多个管道符进行分割。

 

3、优先级

  假如我们使用了公有过滤器和私有过滤器,同时着两个过滤器的名称相同,那么是应用私有过滤器还是公有过滤器呢?

  <div id="app" >
 <h3>{{msg | msgFormat}}</h3>
  </div>
<script>
   Vue.filter("msgFormat",function (msg) {  //公有过滤器
       return msg+",公有过滤器"
   });
   var vm=new Vue({
       el:"#app",
       data:{
           msg:"今天的我吃了饭,明天的我不吃饭"
       },
       methods:{

       },
       filters:{
         msgFormat:function (msg) {   //私有过滤器
             return msg+",私有过滤器"
         }
       }
   })
</script>

运行结果:

在私有过滤器和公有过滤器同名时,优先使用私有过滤器。

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值