vue过滤器 filter

根据Vue 官方给出的解释,过滤器是可被用于一些常见的文本格式化的东西。过滤器可以在两个地方被使用,一个是在双花括号的插值表达式中和v-bind 表达式中(后者从2.1.0+开始支持)

  • 过滤器不会改变原数据,而是生成了新的数据
// 在双花括号中使用  capitalize 为过滤器的名字 message 为需要过滤的文本
{{ message | capitalize }}

// 在 v-bind 中使用
<div v-bind:id="rawId | formatId"></div>
过滤器的定义分:
  • 全局定义过滤器
  • 本地定义过滤器
// 全局注册 ,在创建Vue 实例之前全局定义过滤器:
Vue.filter('capitalize', function (value) {
  if (!value) return ''
  value = value.toString()
  return value.charAt(0).toUpperCase() + value.slice(1)
})
// 创建 Vue 实例之前定义过滤器
new Vue({
  // ...
})

// 在一个组件中定义本地的过滤器
filters: {
  capitalize: function (value) {
    if (!value) return ''
    value = value.toString()
    return value.charAt(0).toUpperCase() + value.slice(1)
  }
}
  • 过滤器支持串联使用 如下:
    {{ message | filterA | filterB }}

message 经过 过滤器 filterA 处理完的结果,会再被传入 过滤器 filterB 中进行处理

  • 过滤器是JavaScript函数,可以接收多个参数:
    {{ message | filterA('arg1', arg2) }}

这里,filterA 被定义为接收三个参数的过滤器函数。其中 message 的值作为第一个参数,普通字符串 'arg1' 作为第二个参数,表达式 arg2 的值作为第三个参数。

时间过滤器

// 全局定义时间过滤器  返回值格式: 2020-02-08  13:12:15
Vue.filter('dateFormat', function( originVal ) {
    const dt =new Date(originVal)

    const y = dt.getFullYear()
    const m = ( dt.getMonth() +1 + '' ).padStart(2,0)
    const d = ( dt.getDate() + '' ).padStart(2,0)
    
    const hh = ( dt.getHours() + '' ).padStart(2,0)
    const mm = ( dt.getMinutes() + '' ).padStart(2,0)
    const ss = ( dt.getSeconds() + '' ).padStart(2,0)

    return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
})


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。