vue之filter(过滤器)

Vue.js中可以自定义过滤器,用于常见的文本格式化(比如:格式化时间、首字母大写,动态绑定el-tag的样式)
过滤器应该被添加在JavaScript表达式的尾部,由“管道”符号指示。

过滤器可以串联:

{{ message | filterA | filterB }}

在这个例子中,filterA 被定义为接收单个参数的过滤器函数,【表达式 message 的值将作为参数传入到函数中】。然后继续调用同样被定义为接收单个参数的过滤器函数 filterB,将 filterA 的结果传递到 filterB 中。

过滤器是 JavaScript 函数,因此可以接收参数:

{{ message | filterA('arg1', arg2) }}

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

过滤器的定义位置:
1.在一个组件的选项中定义本地的过滤器
## demoxx.vue文件中
export default {
  name: 'demo',
  filters: { 
    statusFilter(status) {
      const statusMap = {
        published: 'success',
        draft: 'info',
        deleted: 'danger'
      }
      return statusMap[status]
    }
  },
  data() {
   ## ........省略代码......
2.在创建Vue实例之前全局定义过滤器
##main.js文件中
Vue.filter('capitalize', function (value) {
  if (!value) return ''
  value = value.toString()
  return value.charAt(0).toUpperCase() + value.slice(1)
})

new Vue({
  // ...
})
当全局过滤器和局部过滤器重名时,会采用局部过滤器。
过滤器的使用地方:双花括号插值和v-bind表达式
1. 双花括号插值

        
      
2. 用在v-bind表达式 ( 在一个组件的选项中定义本地的过滤器)

        

   ## ........省略代码......
export default {
  name: 'demo',
  filters: { 
    statusFilter(status) {
      const statusMap = {
        published: 'success',
        draft: 'info',
        deleted: 'danger'
      }
      return statusMap[status]
    }
  },
  data() {
   ## ........省略代码......
效果图
效果图,不同的状态显示不同的tag样式.png

================== ===========================================
此处想到了工具类,将公用方法放在一个util.js中,然后在main.js中引入。
util中的方法也同样可以在 双花括号插值和v-bind表达式中使用。

vue--admin框架中util文件的index.js貌似不需要在main.js中引用可以直接使用。

你可能感兴趣的:(vue之filter(过滤器))