• Vue.js(2)- 过滤器


    • 概念:过滤器本质上就是一个函数,可被用作一些常见的文本格式化

    • 过滤器只可以用在两个地方:mustache 插值表达式和 v-bind 表达式

    • 过滤器应该被添加在 JavaScript 表达式的尾部,由管道符指示;

     全局过滤器

    // main.js
    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}`
    })
    
    Vue.filter('String', function(originVal) {
      return '==' + originVal + '=='
    })
    <template>
      <div class="detail">
        <p>{{msg | dateFormat | String }}</p>
        <p>{{ msg }}</p>
      </div>
    </template>

     过滤器传参

    Vue.filter('dateFormat', function (originVal, pattern) {
      console.log(pattern)
      const dt = new Date(originVal)
      const y = dt.getFullYear()
      const m = (dt.getMonth() + 1 + '').padStart(2, '0')
      const d = (dt.getDate() + '').padStart(2, '0')
      if (pattern === 'yyyy-mm-dd') {
        return `${y}-${m}-${d}`
      } else {
        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}`
      }
    })
    <template>
      <div class="detail">
        <p>{{msg | dateFormat('yyyy-mm-dd')}}</p>
        <p>{{ msg }}</p>
      </div>
    </template>

    注意:不传参默认的参数是undefined

    私有过滤器

    <template>
      <div class="detail">
        <!-- pattern就是传的yyyy-mm-dd参数,传参传的是条件! -->
        <p>{{ msg | dateFormat('yyyy-mm-dd hh:mm:ss') }}</p>
        <p>{{ msg }}</p>
      </div>
    </template>
    
    <script>
    export default {
      data() {
        return {
          msg: +new Date()
        }
      },
      filters: {
        dateFormat: function(originVal, pattern) {
          console.log(pattern)
          const dt = new Date(originVal)
          const y = dt.getFullYear()
          const m = (dt.getMonth() + 1 + '').padStart(2, '0')
          const d = (dt.getDate() + '').padStart(2, '0')
          if (pattern === 'yyyy-mm-dd') {
            return `${y}-${m}-${d}`
          } else {
            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}`
          }
        }
      }
    }
    </script>
    
    <style lang="less" scoped>
    </style>

    当全局过滤器和私有过滤器重名时,优先使用私有过滤器

  • 相关阅读:
    shell基础命令
    UITest 单元测试常用的断言
    UIColor 使用起来的坑
    appledoc 使用brew命令安装使用
    appledoc 使用
    Xcode升级 Alcatraz 无法使用
    APP多语言环境支持
    VVDocumenter 使用
    NSDate NSString相互转化
    iOS 常见设计模式
  • 原文地址:https://www.cnblogs.com/houfee/p/9920561.html
Copyright © 2020-2023  润新知