首页 > 其他分享 >Vue全局过滤器的使用以及在template三元运算符中内使用过滤

Vue全局过滤器的使用以及在template三元运算符中内使用过滤

时间:2023-06-17 11:13:26浏览次数:51  
标签:中内 Vue value 运算符 过滤 let filters time day

新建filters.js如下,内容过滤可以自己写函数,记得export 导出

import dayjs from "dayjs";

// 转小写
let lower = value => value.toLowerCase();
// 转大写
let upper = value => value.toUpperCase();
let currencyStyle = (value, style) => { // 货币格式
    /**
     * style: 
     *   currency:货币
     *   number: 数字格式
     */
    if (style == 'number') { // 数字格式
        return parseFloat(value.replace(/[^\d\.-]/g, ""));
    } else { // 货币格式, 并保留2位小数
        var n = 2;
        value = parseFloat((value + "").replace(/[^\d\.-]/g, "")).toFixed(n) + "";
        var l = value.split(".")[0].split("").reverse(),
            r = value.split(".")[1];
        var t = "";
        for (var i = 0; i < l.length; i++) {
            t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : "");
        }
        return t.split("").reverse().join("") + "." + r;
    }
}

/**
 * 时间过滤器
 * @param {*} time 传入毫秒 
 * @returns 返回0′23″这样子
 */
let timeFilter = (time) => { // 货币格式
    if (time == null || time == undefined || time == 0) {
        return time;
    }
    const day = dayjs(0).millisecond(Number.parseInt(time));
    let str = "";
    if (day.minute() >= 0) {
        str += day.minute() + "′";
    }
    if (day.second() >= 0) {
        str += day.second() + "″";
    }
    return str;
}
export {
    lower,
    upper,
    currencyStyle,
    timeFilter
}

在main.js中 引入

//挂载全局过滤
import * as filters from '@/utils/filters.js'
Object.keys(filters).forEach(key => {
  Vue.filter(key, filters[key])
})

使用场景在局部组件内直接用

eg:在三元中使用过滤

    <span >{{item.qualified == null? "-": $options.filters.timeFilter(item.qualified)}}</span>

eg:在页面中直接使用过滤

  <el-table-column label="(表现 | 分数)" align="center" min-width="200">
       <template slot-scope="scope">
           <div class="cur">
               {{scope.row.cantileveredArm | timeFilter }}</span>
           </div>
       </template>
 </el-table-column>

 

标签:中内,Vue,value,运算符,过滤,let,filters,time,day
From: https://www.cnblogs.com/zcm1688/p/17487170.html

相关文章

  • Vue进阶(幺贰柒):插槽详解
    (文章目录)一、概述插槽就是子组件中用slot标签定义的预留位置,可以设置name属性,也可以不设置name属性,设置name属性的叫具名插槽,不设置name属性的叫不具名插槽,在父组件中使用子组件时候,可以在使用子组件标签内通过声明插槽名或不声明插槽名的方式往子组件中的具名插槽或者不具名插......
  • TienChin 开篇-运行 RuoYiVue
    开篇目的:让大家随心所欲的DIY若依的脚手架不会涉及到太多基础知识踊跃提问(不懂得地方大家提问我会根据提问,后续一一解答疑惑)下载RuoYiVueGitee:https://gitee.com/y_project/RuoYi-Vue下载完毕之后,这个项目当中存在一个ruoyi-ui这个是前端,只是放在了这个项目当中方便我们进......
  • 基于uniapp+vite4+vue3搭建跨端项目|uni-app+uview-plus模板
    最近得空学习了下uniapp结合vue3搭建跨端项目。之前也有使用uniapp开发过几款聊天/仿抖音/后台管理等项目,但都是基于vue2开发。随着vite.js破局出圈,越来越多的项目偏向于vue3开发,就想着uniapp搭配vite4.x构建项目效果会如何?经过一番尝试果然真香~版本信息HBuilderX:3.8.4Vite......
  • C++面试八股文:在C++中,你知道哪些运算符?
    C++面试八股文:在C++中,你知道哪些运算符?某日二师兄参加XXX科技公司的C++工程师开发岗位第11面:面试官:在C++中,你都知道都哪些运算符?二师兄:啥?运算符?+-*/=这些算吗?面试官:嗯,还有其他的吗?二师兄:当然还有,+=,-=,*=,/=,==,还有逻辑运算,位运算等。面试官:好的。那你知道这些运算......
  • vue链接 sse 接口 实现实施通讯
    sendSSEMessage(){fetch('http://152.xxx.xx.76:xxxxx/api/v1/chat/message/send?prompt=什么是Python&chat_session_id=1',{headers:{token:"abbb78cbbdde1727ac43bd7770497eee6d598310"......
  • java基于springboot+vue的网吧管理系统,附源码+数据库+论文+PPT,适合课程设计、毕业设计
    1、项目介绍随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代,网吧管理系统就是信息时代变革中的产物之一。任何系统都要遵循系统设计的基......
  • Vue进阶(幺贰陆):表格复用 TypeError: _self.$scopedSlots.default is not a function解
    (文章目录)一、前言在使用elementUI的el-table组件时,表头应用v-if判断来动态显示,正常来说这样的操作是没有问题的,但是如果在这基础上使用<templateslot-scope="scope">操作的话,表头一旦切换就会报错,错误信息如下:_self.$scopedSlots.defaultisnotafunction二、解决方......
  • vue3:vue+nginx+php进行服务端部署的配置(nginx/1.18.0 / [email protected])
    一,开发环境中的配置:1,前端:vue的vue.config.jsconst{defineConfig}=require('@vue/cli-service')module.exports=defineConfig({transpileDependencies:true,publicPath:process.env.NODE_ENV==="production"?"./":"/&qu......
  • vue-文字转语音
    vueSpeechSynthesisUtterance监听事件onstart开始合成onend合成结束onerror合成错误onpause暂停onresume恢复暂停onboundary在句子或单词边界<template><divclass="language"><!--<divclass="right-lanage">--><imgsrc=&q......
  • vue实现点击按钮一键复制功能
    点击复制按钮后,将内容一键复制下来,不用去选中复制第一种直接使用js方式:<divclass="mask-cont"><p><inputid="input"/></p><buttonclass="btns"@click="copyToClip">复制</button></div>copyToClip()......