9

vue过滤器

过滤器实质不改变原始数据,只是对数据进行加工处理后返回过滤后的数据再进行调用处理,这点要切记

过滤器的定义和使用

定义

全局定义和局部定义两种方式

// 全局注册
Vue.filter('toRMB', function (value) {
  return `¥${value}`
})

new Vue({
  el: '#app',
  data: {
    money: 826.26,
  },

  // 局部注册
  filters: {
    toFixed: function(money) {
      return money.toFixed(1)
    },
  },
)}

使用

在双花括号中使用管道符(pipeline) |隔开,或者v-bind 表达式(v2.1.0以上支持)

<h2>过滤器的使用-添加前缀</h2>
<p>{{352.11 | toRMB}}</p>
<p>{{657 | toRMB}}</p>
<p>{{657.22 | toFixed }}</p>
<p>{{money | toFixed }}</p>

还可以链式使用,注意先后的顺序,如下面的先添加¥符号再进行小数位变换将会出错,因此要注意先后顺序

<p>{{ money | toFixed | toRMB }}</p>

过滤器函数的多层参数

过滤器函数是指接收的参数不止value这一个,还可以添加lengthsuffix参数

<h2>多重参数</h2>
<p>{{text}}</p>
<p>{{text | readMore(20,'...')}}</p>
new Vue({
  el: '#app',
  data: {
    text: 'hello I love u, will u love me ?',
  },
  filters: {
    readMore: function (value,length,suffix) {
      console.log(arguments);
      return value.substr(0,length) + suffix;
    },
  }
})

完整DEMO请戳

其他一些例子

收集了一些常见的使用场景,多加联系

  1. 把JS值转换为JSON字符串
  2. 从数组对象中提取属性
  3. 根据索引返回元素
  4. 返回给定队列的最小值
  5. 打乱元素
  6. 返回数组的首项值
  7. 返回数组的尾项值
  8. 返回数组的拷贝
  9. 移除数组中的重复项
  10. 将一段文字放到字符后面
  11. 重复字符片段n次

参考


窗里窗外
367 声望13 粉丝