vue中的過(guò)濾器及其時(shí)間格式化問(wèn)題
一、過(guò)濾器介紹
Vue.js 允許你自定義過(guò)濾器,可被用于一些常見(jiàn)的文本格式化。過(guò)濾器可以用在兩個(gè)地方:雙花括號(hào)插值和 v-bind 表達(dá)式 (后者從 2.1.0+ 開始支持)。過(guò)濾器應(yīng)該被添加在 JavaScript 表達(dá)式的尾部,由 管道 符號(hào)指示:
<!-- 在雙花括號(hào)中 --> {{ message | capitalize }} <!-- 在 `v-bind` 中 --> <div v-bind:id="rawId | formatId"></div>
二、全局過(guò)濾器
在創(chuàng)建 Vue 實(shí)例之前全局定義過(guò)濾器
【 代碼示例 】
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>過(guò)濾器</title> <script src="js/vue.js"></script> </head> <body> <div id="app"> <input type="text" v-model="msg"> <div>{{ msg | strUpper }}</div> </div> <script> // 定義一個(gè)全局過(guò)濾器,把字符串的第一個(gè)字符轉(zhuǎn)換為大寫 Vue.filter('strUpper', function (str) { return str.charAt(0).toUpperCase() + str.slice(1) }) var vm = new Vue({ el: '#app', data: { msg: '' } }) </script> </body> </html>
測(cè)試結(jié)果:
過(guò)濾器可以串聯(lián)。在一個(gè)插值表達(dá)式中可以使用多個(gè)過(guò)濾器,過(guò)濾器之間用管道符 隔開,過(guò)濾器從左到右的順序進(jìn)行執(zhí)行。
{{ message | filterA | filterB }}
在這個(gè)例子中,filterA 被定義為接收單個(gè)參數(shù)的過(guò)濾器函數(shù),表達(dá)式 message的值將作為參數(shù)傳入到函數(shù)中。然后繼續(xù)調(diào)用同樣被定義為接收單個(gè)參數(shù)的過(guò)濾器函數(shù) filterB,將 filterA 的結(jié)果傳遞到 filterB 中。
調(diào)用第一個(gè)過(guò)濾器會(huì)使輸入的字符串第一個(gè)字符轉(zhuǎn)成大寫,調(diào)用第二個(gè)過(guò)濾器替換字符串中的空格為逗號(hào)。
【 代碼示例 】
<div>{{ msg | strUpper | strReplace }}</div> Vue.filter('strReplace', function (str) { return str.replace(/ /g, ',') })
測(cè)試結(jié)果:
【 知識(shí)拓展 】
slice() 方法可從已有的數(shù)組中返回選定的元素。
① 語(yǔ)法:
arrayObject.slice(start,end)
② 參數(shù):
③ 返回值 :
返回一個(gè)新的數(shù)組,包含從 start 到 end (不包括該元素)的 arrayObject 中的元素。
三、局部過(guò)濾器
定義一個(gè)局部的過(guò)濾器,格式化當(dāng)前時(shí)間
【 代碼示例 】
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="winowh=device-winowh, initial-scale=1.0"> <title>過(guò)濾器學(xué)習(xí)2</title> <script src="js/vue.js"></script> </head> <body> <div id="app"> <div>當(dāng)前時(shí)間是: {{ dateTime }}</div> <div>格式化后的時(shí)間是: {{ dateTime | dateFormat }}</div> </div> <script> var vm = new Vue({ el: '#app', data: { dateTime: new Date(), }, // 定義一個(gè)局部的過(guò)濾器,格式化當(dāng)前時(shí)間 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') // 過(guò)濾器中要有返回值 return `${y}-${m}-$ublnpf9mb ${hh}:${mm}:${ss}` } } }) </script> </body> </html>
測(cè)試結(jié)果:
注意:
當(dāng)有兩個(gè)名稱相同的全局過(guò)濾器和局部過(guò)濾器的時(shí)候,會(huì)以就近原則進(jìn)行調(diào)用過(guò)濾器,局部過(guò)濾器的優(yōu)先級(jí)高于全局過(guò)濾器。
【 知識(shí)拓展 】
padStart() 可以在字符串的開頭進(jìn)行字符補(bǔ)全。
① 語(yǔ)法:
str.padStart(targetLength [, padString])
② 參數(shù):
③ 返回值:
在原字符串開頭填充指定的填充字符串直到目標(biāo)長(zhǎng)度所形成的新字符串。
借鑒網(wǎng)上的常用方法格式化時(shí)間
<body> <div id="app"> <div>當(dāng)前時(shí)間是: {{ dateTime }}</div> <div>格式化后的時(shí)間是: {{ 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(), // 小時(shí) "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(), }, // 定義一個(gè)局部的過(guò)濾器,格式化當(dāng)前時(shí)間 filters: { dateFormat: (dateTime, fmt) => { var dt = new Date(dateTime) return dt.format(fmt) } }, }) </script> </body>
總結(jié)
到此這篇關(guān)于vue中的過(guò)濾器及其時(shí)間格式化問(wèn)題的文章就介紹到這了,更多相關(guān)vue 過(guò)濾器時(shí)間格式化內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue+Mockjs模擬curd接口請(qǐng)求的示例詳解
這篇文章主要介紹了Vue+Mockjs模擬curd接口請(qǐng)求的示例詳解,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07vue3+elementPlus二次封裝表單的實(shí)現(xiàn)代碼
最近使用Vue3+ElementPlus開發(fā)項(xiàng)目,從整體上構(gòu)思組件的封裝。能寫成組件的內(nèi)容都進(jìn)行封裝,方便多個(gè)地方使用,這篇文章給大家介紹了vue3+elementPlus二次封裝表單的實(shí)現(xiàn),并通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-03-03vue-resource 攔截器(interceptor)的使用詳解
本篇文章主要介紹了vue-resource 攔截器(interceptor)的使用詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07vue實(shí)現(xiàn)文字檢索時(shí)候?qū)⑺阉鲀?nèi)容標(biāo)紅功能
這篇文章主要介紹了vue中實(shí)現(xiàn)文字檢索時(shí)候?qū)⑺阉鲀?nèi)容標(biāo)紅,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-08-08vue.js 雙層嵌套for遍歷的方法詳解, 類似php foreach()
今天小編就為大家分享一篇vue.js 雙層嵌套for遍歷的方法詳解, 類似php foreach(),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-09-09淺談vue在html中出現(xiàn){{}}的原因及解決方式
這篇文章主要介紹了淺談vue在html中出現(xiàn){{}}的原因及解決方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11Vue Element前端應(yīng)用開發(fā)之常規(guī)Element界面組件
在我們開發(fā)BS頁(yè)面的時(shí)候,往往需要了解常規(guī)界面組件的使用,小到最普通的單文本輸入框、多文本框、下拉列表,以及按鈕、圖片展示、彈出對(duì)話框、表單處理、條碼二維碼等等,本篇隨筆基于普通表格業(yè)務(wù)的展示錄入的場(chǎng)景介紹這些常規(guī)Element組件的使用2021-05-05vue項(xiàng)目中添加electron的詳細(xì)代碼
這篇文章通過(guò)實(shí)例代碼給大家介紹了vue項(xiàng)目中添加electron的方法,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2021-11-11