vue-cli 3 全局过滤器的实例代码详解


Posted in Javascript onJune 03, 2019

vue-cli 3 全局过滤器的实例代码详解

在vue1.x版本里是自带里几个基础的过滤器的(虽然不怎么用到)。

到了vue2.x版本之后,内置到几个过滤器就被删掉了,如果需要用到过滤器,就要开发者自己去定义。

可以把过滤器定义在某个组件内部,但这样就成了局部过滤器,在别的组件里是无法使用的。所以通常不会这么做。

也可以把过滤器写在main.js里。但如果项目中存在多个过滤器,这会使main.js文件看上去很庞大,不便于后期维护。

所以通常会新建一个js文件,专门用来存放所有过滤器。最后再引到main.js中供全局使用。

1、创建 filters.js

首先新建一个filters.js文件。把这个文件放在 src/assets 里。

vue-cli 3 全局过滤器的实例代码详解

因为这里是用来存放静态资源的。这个文件夹可以用来存放图片、css和部分自定义的功能的js资源。如果需要更好的分类,可以在 assets 文件夹里再创建 js 、 css 、 img 等文件夹。

2、创建过滤器规则

这里我创建了3个过滤器

// 转小写
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;
  }
}
export {
  lower,
  upper,
  currencyStyle
}

3、在main.js里注册全局过滤器

import Vue from 'vue'
import App from './App.vue'
import * as filters from './assets/filters'
Object.keys(filters).forEach(key => {
 Vue.filter(key, filters[key])
})
Vue.config.productionTip = false
new Vue({
 render: h => h(App),
}).$mount('#app')

通过 forEach 循环,把自定义功能分别注册到过滤器里。

4、在组件里使用

<template>
 <div id="app">
  <p>{{ num1 | currencyStyle('currency') }}</p>
  <p>{{ num2 | currencyStyle('number') }}</p>
  <p>{{ msg1 | lower }}</p>
  <p>{{ msg2 | upper }}</p>
 </div>
</template>
<script>
export default {
 name: 'app',
 data() {
  return {
   num1: 123456,
   num2: '123,456',
   msg1: 'ABC',
   msg2: 'def'
  }
 }
}
</script>

vue-cli 3 全局过滤器的实例代码详解

总结

以上所述是小编给大家介绍的vue-cli 3 全局过滤器的实例代码详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
浅谈JavaScript中的字符编码转换问题
Jul 07 Javascript
jquery获取img的src值的简单实例
May 17 Javascript
总结AngularJS开发者最常犯的十个错误
Aug 31 Javascript
一句jQuery代码实现返回顶部效果(简单实用)
Dec 28 Javascript
Jquery树插件zTree实现菜单树
Jan 24 Javascript
Vue仿今日头条实例详解
Feb 06 Javascript
vue实现引入本地json的方法分析
Jul 12 Javascript
JavaScript检查数据中是否存在相同的元素(两种方法)
Oct 07 Javascript
利用jsonp解决js读取本地json跨域的问题
Dec 11 Javascript
webpack4实现不同的导出类型
Apr 09 Javascript
java遇到微信小程序 &quot;支付验证签名失败&quot; 问题解决
Dec 22 Javascript
开发Node CLI构建微信小程序脚手架的示例
Mar 27 Javascript
vue2之简易的pc端短信验证码的问题及处理方法
Jun 03 #Javascript
使用RxJS更优雅地进行定时请求详析
Jun 02 #Javascript
Vue CLI3基础学习之pages构建多页应用
Jun 02 #Javascript
Vue基础学习之项目整合及优化
Jun 02 #Javascript
JavaScript判断对象和数组的两种方法
May 31 #Javascript
vue中node_modules中第三方模块的修改使用详解
May 31 #Javascript
Vuex新手的理解与使用详解
May 31 #Javascript
You might like
笑谈配置,使用Smarty技术
2007/01/04 PHP
php 结果集的分页实现代码
2009/03/10 PHP
php使用Header函数,PHP_AUTH_PW和PHP_AUTH_USER做用户验证
2016/05/04 PHP
javascript Math.random()随机数函数
2009/11/04 Javascript
JS继承 笔记
2011/07/13 Javascript
MooTools 页面滚动浮动层智能定位实现代码
2011/08/23 Javascript
jQuery 鼠标经过(hover)事件的延时处理示例
2014/04/14 Javascript
浅析JQuery中的html(),text(),val()区别
2014/09/01 Javascript
JavaScript实现点击单元格改变背景色的方法
2016/02/12 Javascript
jquery使用on绑定a标签无效 只能用live解决
2016/06/02 Javascript
详解vue.js之props传递参数
2017/12/12 Javascript
深入理解Node module模块
2018/03/26 Javascript
vue 本地环境跨域请求proxyTable的方法
2018/09/19 Javascript
vue cli 3.x 项目部署到 github pages的方法
2019/04/17 Javascript
优雅地使用loading(推荐)
2019/04/20 Javascript
layer关闭当前窗口页面以及确认取消按钮的方法
2019/09/09 Javascript
vue 解决mintui弹窗弹起来,底部页面滚动bug问题
2020/11/12 Javascript
微信小程序反编译的实现
2020/12/10 Javascript
Python批量转换文件编码格式
2015/05/17 Python
python使用pymysql实现操作mysql
2016/09/13 Python
Python连接PostgreSQL数据库的方法
2016/11/28 Python
详解Golang 与python中的字符串反转
2017/07/21 Python
Django框架 信号调度原理解析
2019/09/04 Python
django框架基于queryset和双下划线的跨表查询操作详解
2019/12/11 Python
关于Tensorflow使用CPU报错的解决方式
2020/02/05 Python
python Plotly绘图工具的简单使用
2020/03/03 Python
使用layui实现左侧菜单栏及动态操作tab项的方法
2020/11/10 HTML / CSS
世界上最大的各式箱包网络零售店:eBag
2016/07/21 全球购物
英国最大的在线照明商店:Litecraft
2020/08/31 全球购物
信息管理员岗位职责
2013/12/01 职场文书
高等学院职业生涯规划书范文
2014/09/16 职场文书
开展党的群众路线教育实践活动情况汇报
2014/11/05 职场文书
小型婚礼主持词
2015/06/30 职场文书
生日寿星公答谢词
2015/09/29 职场文书
Nginx 过滤静态资源文件的访问日志的实现
2021/03/31 Servers
Python 循环读取数据内存不足的解决方案
2021/05/25 Python