使用vue过滤器写工具函数

news/2024/7/10 3:14:36 标签: vue

vue中的过滤器可以用在两个地方:双花括号插值和 v-bind 表达式 。过滤器应该被添加在 JavaScript 表达式的尾部,由“管道”符号=>’|'指示。
使用:

<!-- 在双花括号中 -->
{{ msg | msgFormat}}

<!--`v-bind`-->
<div :msg="msg| msgFormat"></div>

定义:

// 在创建根实例之前 即全局过滤器
Vue.filter('msgFormat', (msg) => { // msg 为过滤的数据
     return msg.replace(/\s+/g,"")
})
// 在一个组件的选项中定义过滤器 即局部过滤器
filters: {
  msgFormat: (msg) => { // msg 为过滤的数据
    return msg.replace(/\s+/g,"")
  }
}

以下是一些常用的过滤器,可放入工具函数模块中

vue.filter('dealSpace', (value) => { // 去空格
    return value.replace(/\s+/g,"")
})
vue.filter('roundNum', (value, decimal) => { // 四舍五入
    let p = Math.pow(10, decimal)
    return Math.round(value * p) / p
})
vue.filter('floorNum', (value, decimal) => { // 向下取整
    let p = Math.pow(10, decimal)
    return Math.floor(value * p) / p
})
vue.filter('priceFormat', number => { // 将价格数字转化为xxx,xxx,xxx.xx格式
    if (number === '' || number === null || number === 'null') {
      return ''
    }
  
    number = Number(number).toFixed(2)
    if (typeof number === 'number') {
      number = '' + number
    }
  
    let integerStr = number.split('.')[0]
    let decimalStr = number.split('.')[1]
    let preStr = ''
  
    if (decimalStr) {
      if (decimalStr.length === 1) {
        decimalStr = `.${decimalStr}0`
      } else {
        decimalStr = `.${decimalStr}`
      }
    } else {
      decimalStr = '.00'
    }
  
    if (integerStr.indexOf(',') > -1) {
      preStr = integerStr
    } else {
      let temp = []
      let index = integerStr.length
      while (index > 0) {
        let start, end
        if (index - 3 < 0) {
          start = 0
        } else {
          start = index - 3
        }
        end = index
        let s = integerStr.substring(start, end)
        index -= 3
        temp.push(s)
      }
      preStr = temp.reverse().join(',')
    }
  
    return `${preStr}${decimalStr}`
})
// 将时间戳转化为xxxx-xx-xx xx:xx:xx的时间格式
vue.filter('dateTime', timestamp => {
    function format (number) {
      return number.toString().padStart(2, '0')
    }
  
    const date = new Date(Number.parseInt(timestamp, 10))
    const YYYY = date.getFullYear()
    const MM = date.getMonth() + 1
    const DD = date.getDate()
    const hh = date.getHours()
    const mm = date.getMinutes()
    const ss = date.getSeconds()
    return `${YYYY}-${format(MM)}-${format(DD)} ${format(hh)}:${format(mm)}:${format(ss)}`
})

注意:
1、 当有局部和全局两个名称相同的过滤器时候,会以就近原则进行调用,即:局部过滤器优先于全局过滤器被调用。
2、 一个表达式可以使用多个过滤器。过滤器之间需要用管道符“|”隔开。其执行顺序从左往右。


http://www.niftyadmin.cn/n/1769485.html

相关文章

移除链表元素(临时)

移除链表元素 题目描述 测试结果 具体代码 package test_26;class ListNode { int val;ListNode next;ListNode(int x) { val x; } } class Solutions {public ListNode removeElements(ListNode head, int val) {if(headnull) return null;ListNode newHeadnew ListNod…

如何找到网页上默认的保存密码

凭据管理器 点击Windows 凭据 特别注意Windows凭据查看密码&#xff0c;必须要本身电脑有账号和密码&#xff0c;就是登录界面只要需要密码就可以啦&#xff08;因为要验证&#xff09;

使用vue自定义指令写工具函数

vue中有很多v- 前缀的特殊 attribute&#xff0c;这就是vue的指令。指令的职责是&#xff0c;当表达式的值改变时&#xff0c;将其产生的连带影响&#xff0c;响应式地作用于 DOM。常见的vue指令有&#xff1a;v-bind、v-on、v-model、v-if、v-show等。但是有些时候vue内置的这…

JVM调优预习(note)

在线调优JVM——GC-turning 前言 马士兵老师公开课真的讲的挺好的&#xff0c;不过自身水平不够&#xff0c;整理一下自己听课的感觉 为什么使用root searching JVM调优 垃圾回收 垃圾&#xff1a;当有一个对象没有任何引用指向 java通过垃圾回收器&#xff0c;一般不需要关…

js中call()、apply()、bind()的使用及实现

使用 call()、apply()、bind()都是用来改变this的指向的。 一、A.a.call(B, x, y) A是一个对象&#xff0c;a是对象A里的方法函数&#xff0c;x和y是a函数的参数&#xff0c;B也是一个对象&#xff0c;但对象B想调用对象A的a方法&#xff0c;那么call()的作用就是改变函数a的t…

三角形最大和问题

题目描述 给一个数组至少三个数&#xff0c;任意选出数组中三个数&#xff0c;求满足三角形的三个数的最大和 例如&#xff1a; 1 2 3 不满足三角形&#xff0c;返回0 1 2 3 4 满足三角形最大和为2349&#xff0c;返回9 package test_26; import java.lang.reflect.Array…

浅克隆与深克隆

浅克隆 一般实现数组克隆的方法都是浅克隆&#xff0c;直接将存储在栈中的值赋值给对应变量&#xff0c;如果是基本数据类型&#xff0c;则直接赋值对应的值&#xff0c;如果是引用类型&#xff0c;则赋值的是地址 方法 slice&#xff1a; let arr2 arr1.slice(0); concat…

Java多线程(切换输入)

多线程 数组1 {1&#xff0c;2&#xff0c;3} 数组2{A&#xff0c;B&#xff0c;C} 要求切换输出结果&#xff1a;1A2B3C package test_26;import java.util.concurrent.locks.LockSupport;class S1 {static Thread t1null,t2null;public static void main(String[] args) {…