vue中的过滤器及其时间格式化问题


Posted in Javascript onApril 09, 2020

一、过滤器介绍

Vue.js 允许你自定义过滤器,可被用于一些常见的文本格式化。过滤器可以用在两个地方:双花括号插值和 v-bind 表达式 (后者从 2.1.0+ 开始支持)。过滤器应该被添加在 JavaScript 表达式的尾部,由 管道 符号指示:

<!-- 在双花括号中 -->
{{ message | capitalize }}

<!-- 在 `v-bind` 中 -->
<div v-bind:id="rawId | formatId"></div>

二、全局过滤器

在创建 Vue 实例之前全局定义过滤器

【 代码示例 】

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>过滤器</title>
  <script src="js/vue.js"></script>
</head>

<body>
  <div id="app">
    <input type="text" v-model="msg">
    <div>{{ msg | strUpper }}</div>
  </div>
  <script>
    // 定义一个全局过滤器,把字符串的第一个字符转换为大写
    Vue.filter('strUpper', function (str) {
      return str.charAt(0).toUpperCase() + str.slice(1)
    })
    var vm = new Vue({
      el: '#app',
      data: {
        msg: ''
      }
    })
  </script>
</body>

</html>

测试结果:

vue中的过滤器及其时间格式化问题

过滤器可以串联。在一个插值表达式中可以使用多个过滤器,过滤器之间用管道符 隔开,过滤器从左到右的顺序进行执行。

{{ message | filterA | filterB }}

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

调用第一个过滤器会使输入的字符串第一个字符转成大写,调用第二个过滤器替换字符串中的空格为逗号。

【 代码示例 】

<div>{{ msg | strUpper | strReplace }}</div>

Vue.filter('strReplace', function (str) {
  return str.replace(/ /g, ',')
})

测试结果:

vue中的过滤器及其时间格式化问题

【 知识拓展 】

slice() 方法可从已有的数组中返回选定的元素。

① 语法:

arrayObject.slice(start,end)

② 参数:

vue中的过滤器及其时间格式化问题

③ 返回值 :

返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。

三、局部过滤器

定义一个局部的过滤器,格式化当前时间

【 代码示例 】

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="winowh=device-winowh, initial-scale=1.0">
  <title>过滤器学习2</title>
  <script src="js/vue.js"></script>
</head>

<body>
  <div id="app">
    <div>当前时间是: {{ dateTime }}</div>
    <div>格式化后的时间是: {{ dateTime | dateFormat }}</div>
  </div>
  <script>
    var vm = new Vue({
      el: '#app',
      data: {
        dateTime: new Date(),
      },
      // 定义一个局部的过滤器,格式化当前时间
      filters: {
        dateFormat: (dateTime) => {
          var now = new Date(dateTime)
          var y = now.getFullYear()
          var m = (now.getMonth() + 1).toString().padStart(2, '0')
          var d = now.getDate().toString().padStart(2, '0')
          var hh = now.getHours().toString().padStart(2, '0')
          var mm = now.getMinutes().toString().padStart(2, '0')
          var ss = now.getSeconds().toString().padStart(2, '0')
          // 过滤器中要有返回值
          return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
        }
      }
    })
  </script>
</body>

</html>

测试结果:

vue中的过滤器及其时间格式化问题

注意:

当有两个名称相同的全局过滤器和局部过滤器的时候,会以就近原则进行调用过滤器,局部过滤器的优先级高于全局过滤器。

【 知识拓展 】

padStart() 可以在字符串的开头进行字符补全。

① 语法:

str.padStart(targetLength [, padString])

② 参数:

vue中的过滤器及其时间格式化问题

③ 返回值:

在原字符串开头填充指定的填充字符串直到目标长度所形成的新字符串。

借鉴网上的常用方法格式化时间

<body>
  <div id="app">
    <div>当前时间是: {{ dateTime }}</div>
    <div>格式化后的时间是: {{ dateTime | dateFormat('yyyy-MM-dd hh:mm:ss') }}</div>
  </div>
  <script>
    Date.prototype.format = function (format) {
      var dateMap = {
        "M+": this.getMonth() + 1, // 月份
        "d+": this.getDate(), // 日
        "h+": this.getHours(), // 小时
        "m+": this.getMinutes(), // 分
        "s+": this.getSeconds(), // 秒
        "q+": Math.floor((this.getMonth() + 3) / 3), // 季度
        "S": this.getMilliseconds() // 毫秒
      };
      if (/(y+)/.test(format)) format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp
        .$1.length));
      for (var k in dateMap)
        if (new RegExp("(" + k + ")").test(format)) format = format.replace(RegExp.$1, (RegExp.$1.length ==
          1) ? (dateMap[k]) : (("00" + dateMap[k]).substr(("" + dateMap[k]).length)));
      return format;
    }
    var vm = new Vue({
      el: '#app',
      data: {
        dateTime: new Date(),
      },
      // 定义一个局部的过滤器,格式化当前时间
      filters: {
        dateFormat: (dateTime, fmt) => {
          var dt = new Date(dateTime)
          return dt.format(fmt)
        }
      },
    })
  </script>
</body>

总结

到此这篇关于vue中的过滤器及其时间格式化问题的文章就介绍到这了,更多相关vue 过滤器时间格式化内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
jquery 实现上下滚动效果示例代码
Aug 09 Javascript
从数组中随机取x条不重复数据的JS代码
Dec 24 Javascript
JavaScript数据类型之基本类型和引用类型的值
Apr 01 Javascript
mvc 、bootstrap 结合分布式图简单实现分页
Oct 10 Javascript
使用jsonp实现跨域获取数据实例讲解
Dec 25 Javascript
JavaScript获取键盘按键的键码(参照表)
Jan 10 Javascript
ReactNative 之FlatList使用及踩坑封装总结
Nov 29 Javascript
vue权限问题的完美解决方案
May 08 Javascript
手把手教你 CKEDITOR 4 实现Dialog 内嵌 IFrame操作详解
Jun 18 Javascript
layUI实现三级导航菜单效果
Jul 26 Javascript
node.js使用http模块创建服务器和客户端完整示例
Feb 10 Javascript
vue中移动端调取本地的复制的文本方式
Jul 18 Javascript
微信小程序保存图片到相册权限设置
Apr 09 #Javascript
微信小程序仿通讯录功能
Apr 09 #Javascript
vue cli4下环境变量和模式示例详解
Apr 09 #Javascript
微信小程序实现组件顶端固定或底端固定效果(不随滚动而滚动)
Apr 09 #Javascript
微信小程序吸底区域适配iPhoneX的实现
Apr 09 #Javascript
加速vue组件渲染之性能优化
Apr 09 #Javascript
javascript设计模式 ? 抽象工厂模式原理与应用实例分析
Apr 09 #Javascript
You might like
深入Memcache的Session数据的多服务器共享详解
2013/06/13 PHP
php防注入及开发安全详细解析
2013/08/09 PHP
php实现的短网址算法分享
2014/06/20 PHP
php生成RSS订阅的方法
2015/02/13 PHP
PHP实现图片上传并压缩
2015/12/22 PHP
Zend Framework连接Mysql数据库实例分析
2016/03/19 PHP
php pdo oracle中文乱码的快速解决方法
2016/05/16 PHP
分享一个我自己写的ToolTip提示插件(附源码)
2013/01/20 Javascript
如何实现JavaScript动态加载CSS和JS文件
2020/12/28 Javascript
基于jQuery实现点击列表加载更多效果
2016/05/31 Javascript
关于验证码在IE中不刷新的快速解决方法
2016/09/23 Javascript
AngularJS表单基本操作
2017/01/09 Javascript
微信小程序 页面跳转和数据传递实例详解
2017/01/19 Javascript
Bootstrap 3 按钮标签实例代码
2017/02/21 Javascript
vue.js语法及常用指令
2017/10/29 Javascript
C#实现将一个字符转换为整数
2017/12/12 Javascript
JavaScript Tab菜单实现过程解析
2020/05/13 Javascript
vue动态加载SVG文件并修改节点数据的操作代码
2020/08/17 Javascript
JavaScript实现手风琴效果
2021/02/18 Javascript
tornado框架blog模块分析与使用
2013/11/21 Python
用Python遍历C盘dll文件的方法
2015/05/06 Python
在Python中操作字典之fromkeys()方法的使用
2015/05/21 Python
python简单获取数组元素个数的方法
2015/07/13 Python
Python 运行 shell 获取输出结果的实例
2019/01/07 Python
Python列表list常用内建函数实例小结
2019/10/22 Python
Python破解BiliBili滑块验证码的思路详解(完美避开人机识别)
2020/02/17 Python
python画图时设置分辨率和画布大小的实现(plt.figure())
2021/01/08 Python
澳大利亚家具和家居用品购物网站:Zanui
2018/12/29 全球购物
教你怎样写好自我评价
2013/10/05 职场文书
2014年重阳节老干部座谈会局领导发言稿
2014/09/25 职场文书
九九重阳节标语
2014/10/07 职场文书
应急管理工作总结2015
2015/05/04 职场文书
休假证明书
2015/06/24 职场文书
晚会开幕词范文
2016/03/04 职场文书
用Python简陋模拟n阶魔方
2021/04/17 Python
动视暴雪取消疫苗禁令 让所有员工返回线下工作
2022/04/03 其他游戏