<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
{{dt | dateFormat('') }}
</div>
<div id="app2">
{{dt | dateFormat('') }}
</div>
<script>
//全局過濾器,進行時間的格式化
Vue.filter('dateFormat', function (dateSter, pattern) {
//根據給定的時間字符串,得到特定的時間
var dt = new Date(dateSter)
//yyyy-mm-dd
var y = dt.getFullYear()
var m = dt.getMonth() + 1
var d = dt.getDate()
//return y + '-' + m + '-' + d
if (pattern.toLowerCase() === 'yyyy-mm-dd') {
return `${y}-${m}-${d}`
} else {
var hh = dt.getHours()
var mm = dt.getMinutes()
var ss = dt.getSeconds()
return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
}
})
var vm = new Vue({
el: '#app',
data: {
dt: new Date()
},
})
var vm2 = new Vue({
el: '#app2',
data: {
dt: new Date()
},
methods: {
show(){
console.log('執行show方法')
}
},
beforeCreate() {
//這是遇到的第一個生命周期函數,表示實例完全被創建出來之前,會執行它
//注意:在beforeCreate 生命周期函數執行的時候, data 和 methods 中的 數據都還沒有初始化
console.log(this.dt);
},
created() {
//這是遇到的第二個生命周期函數
//在created 中 data 和 methods 都已初始化好了
//如果要調用 methods 中的方法, 或者操作 data 中的數據,最早,只能在 created 中操作
console.log(this.dt);
},
beforeMount() {
//這是遇到第三個生命周期函數,表示 模板已經在內存中編輯完成了,但是尚未把模板渲染到頁面中
//在beforeMount 執行的時候,頁面中的元素,還沒有被真正替換過來,只是之前寫的一些模板字符串
console.log(this.dt);
},
mounted() {
//這是遇到的第四個生命周期函數,表示,內存中的模板,已經真實的掛載到了頁面中,用戶可以看到渲染好的頁面
//注意:mounted 是 實例創建的最后一個生命周期函數, 執行 mounted 就表示 , 實例已經被完全創建好了
console.log(this.dt);
},
beforeUpdate() {
//這個時候,表示,我們的界面還沒有被更新 數據被更新
//當執行beforeUpdate的時候,頁面中的顯示數據 還是舊的 此時 data 中的數據是最新的, 頁面尚未和最新的數據同步
console.log(this.dt);
},
updated() {
//updated 事件 執行的時候 , 頁面和data的數據已經保持同步了 都是最新的數據
console.log(this.dt);
},
beforeDestroy() {
//當執行 beforeDestroy 鈎子函數的時候,vue 實例就已經從運行階段進入了銷毀的階段
//實例身上所有的data和所有的methods,以及過濾器 指令。。。。都處於可用狀態,此時,還有沒真正執行銷毀的過程
},
destroyed() {
//組件已經完全銷毀,此時 組件中所有的 數據,方法,指令,過濾器.....都已近不可用了
},
filters: {
//私有過濾器有兩個條件【過濾器名稱 和 處理函數】
//過濾器調用的時候,采用的是就近原則,如果私有過濾器和全局過濾器名稱一致了,這時候優先調用私有過濾器
dateFormat: function (dateSter, pattern = '') {
var dt = new Date(dateSter)
var y = dt.getFullYear()//年
var m = (dt.getMonth() + 1).toString().padStart(2,'0')//月
var d = dt.getDate().toString().padStart(2,'0')//日
//return y + '-' + m + '-' + d
if (pattern.toLowerCase() === 'yyyy-mm-dd') {
return `${y}-${m}-${d}`
} else {
var hh = dt.getHours().toString().padStart(2,'0')//時
var mm = dt.getMinutes().toString().padStart(2,'0')//分
var ss = dt.getSeconds().toString().padStart(2,'0')//秒
return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
}
}
}
})
</script>
</body>
</html>