Vue中的watch屬性

vm實例中的watch屬性,是用來監(jiān)視數(shù)據(jù)的改變的,他是個對象,里面定義函數(shù),函數(shù)名就是數(shù)據(jù)名,這個函數(shù)接收兩個參數(shù)newValoldVal,一個代表新數(shù)據(jù),一個代表舊數(shù)據(jù),當(dāng)數(shù)據(jù)發(fā)生改變的時候,就會觸發(fā)這個函數(shù)。

例:

<!DOCTYPE html>
<html lang="zh-CN">

<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="js/vue.js"></script>
</head>

<body>
    <div id="app">
        <input type="text" v-model='firstName'>+
        <input type="text" v-model= 'lastName'>=
        <input type="text" v-model='fullName'>
    </div>

    <script>
        var vm = new Vue({
            el: '#app',
            data: {
                firstName:'',
                lastName:'',
                fullName:''
            },
            methods: {},
            watch: {
                firstName:function(newVal, oldVal) {
                    this.fullName = newVal + this.lastName;
                },
                lastName: function(newVal, oldVal) {
                    this.fullName = this.firstName + newVal;
                }
            }
        });
    </script>
</body>

</html>

watch的牛逼之處,在于他可以監(jiān)視一些非Dom元素,比如路由,看下面的例子:

<!DOCTYPE html>
<html lang="zh-CN">

<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="js/vue.js"></script>
    <script src="js/vue-router-3.0.1.js"></script>
</head>

<body>
    <div id="app">
        <router-link to="/login">登陸</router-link>
        <router-link to="/register">注冊</router-link>
        <router-view></router-view>
    </div>

    <script>
        var login = {
            template: '<h1>這是登陸頁面</h1>'
        }
        var register = {
            template: '<h1>這是注冊頁面</h1>'
        }
        var router = new VueRouter({
            routes:[
                {path: '/', redirect: '/login'},
                {path: '/login', component: login},
                {path: '/register', component: register}
            ]
        })
        var vm = new Vue({
            el: '#app',
            data: {},
            methods: {},
            router,
            watch: {
                '$route.path': function(newVal, oldVal) {
                    if(newVal == '/login') {
                        console.log('歡迎進(jìn)入登陸界面')
                    }else if(newVal == '/register') {
                        console.log('歡迎進(jìn)入注冊頁面')
                    }
                }
            }
        });
    </script>
</body>

</html>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • vue理解淺談 一 理解vue的核心理念 使用vue會讓人感到身心愉悅,它同時具備angular和react的優(yōu)點...
    ndxs2008閱讀 24,402評論 2 18
  • title: vue-watch數(shù)組和對象date: 2017-03-21 vue watch 本文通過示例介紹v...
    SanY_cjp閱讀 2,018評論 0 4
  • 1.類庫( 提供類方法 ) 和框架 類庫提供一系列的函數(shù)和方法的合集,能夠加快你寫代碼的速度。但是主導(dǎo)邏輯的還是自...
    w_zhuan閱讀 1,947評論 0 8
  • vue 2.0 漸進(jìn)式框架 MVC 單向通信 > m:model 數(shù)據(jù)層 保存數(shù)據(jù) > v:view視圖層 用戶界...
    web前端ling閱讀 864評論 0 0
  • Vue 框架的入口就是 Vue 實例,其實就是框架中的 view model ,它包含頁面中的業(yè)務(wù) 處理邏輯、數(shù)據(jù)...
    云中一樵夫閱讀 1,162評論 0 1

友情鏈接更多精彩內(nèi)容