Vue中全局過濾器期與局部過濾器期的使用


<!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>

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM