Vue的watch和computed屬性

Vue的watch屬性

Vue的watch屬性可以用來監(jiān)聽data屬性中數(shù)據(jù)的變化

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script src="lib/vue.min.js"></script>
        <script src="lib/vue-router-3.0.1.js"></script>
    </head>
    <body>
        <div id="app">
            <input type="text" v-model="firstname" />
        </div>
        <script type="text/javascript">
            var vm = new Vue({
                el:"#app",
                data:{
                    firstname:"",
                    lastname:""
                },
                methods:{},
                watch:{
                    firstname:function(){
                        console.log(this.firstname)
                    }
                }
            })
        </script>
    </body>
</html>

可以從上述代碼中實(shí)踐得知,輸入框內(nèi)的值變化多少次闰渔,控制臺就會(huì)打印多少次

同時(shí)還可以直接在監(jiān)聽的function中使用參數(shù)來獲取新值與舊值

                watch:{
                    firstname:function(newValue,OldValue){
                        console.log(newValue);
                        console.log(OldValue);
                    }
                }

其中第一個(gè)參數(shù)是新值暮现,第二個(gè)參數(shù)是舊值

同時(shí)Watch還可以被用來監(jiān)聽路由router的變化还绘,只是這里的監(jiān)聽的元素是固定的

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script src="lib/vue.min.js"></script>
        <script src="lib/vue-router-3.0.1.js"></script>
        <style type="text/css">
        </style>
    </head>
    <body>
        
        <div id="app">
            <!--
                由于Vue-router的hash匹配原則所以我們需要在原定義的路徑上加一個(gè)#號
            -->
<!--            <a href="#/login">登錄</a>
            <a href="#/register">注冊</a>-->
            <router-link to="/login" tag="span">登錄</router-link>
            <router-link to="/register">注冊</router-link>
            <router-view></router-view>
        </div>
    </body>
    <script>
        var login={
            template:'<h1>登錄組件</h1>'
        }
        var register={
            template:'<h1>注冊組件</h1>'
        }
        var routerObj = new VueRouter({
            routes:[
            //此處的component只能使用組件對象,而不能使用注冊的模板的名稱
                {path:"/login",component:login},
                {path:"/register",component:register}
            ]
        })
        var vm = new Vue({
            el:'#app',
            data:{
            },
            methods:{
                
            },
            router:routerObj,//將路由規(guī)則對象注冊到VM實(shí)例上
            watch:{
                '$route.path':function(newValue,OldValue){
                        console.log(newValue);
                        console.log(OldValue);
                }
            }
        })
    </script>
</html>

計(jì)算屬性Computed的作用

computed屬性的作用與watch類似栖袋,也可以監(jiān)聽屬性的變化

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script src="lib/vue.min.js"></script>
        <script src="lib/vue-router-3.0.1.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 type="text/javascript">
            var vm = new Vue({
                el:"#app",
                data:{
                    firstname:"",
                    lastname:""
                },
                methods:{},
/*              watch:{
                    firstname:function(newValue,OldValue){
                        console.log(newValue);
                        console.log(OldValue);
                    }
                }*/
                computed:{
                    fullname:function(){
                        return this.firstname +"-"+this.lastname
                    }
                }
            })
        </script>
    </body>
</html>

只是他會(huì)根據(jù)他依賴的屬性拍顷,生成一個(gè)屬性,讓vm對象可以使用這個(gè)屬性

methods,watch,computed的區(qū)別

  1. computed屬性的結(jié)果會(huì)被緩存塘幅,除非依賴的響應(yīng)式屬性變化才會(huì)重新計(jì)算昔案。主要當(dāng)作屬性來使用;
  2. methods方法表示一個(gè)具體的操作电媳,主要書寫業(yè)務(wù)邏輯踏揣;
  3. watch一個(gè)對象,鍵是需要觀察的表達(dá)式匾乓,值是對應(yīng)回調(diào)函數(shù)捞稿。主要用來監(jiān)聽某些特定數(shù)據(jù)的變化,從而進(jìn)行某些具體的業(yè)務(wù)邏輯操作;可以看作是computedmethods的結(jié)合體娱局;
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末彰亥,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子衰齐,更是在濱河造成了極大的恐慌任斋,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,029評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件耻涛,死亡現(xiàn)場離奇詭異废酷,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)抹缕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評論 3 385
  • 文/潘曉璐 我一進(jìn)店門澈蟆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人歉嗓,你說我怎么就攤上這事丰介。” “怎么了鉴分?”我有些...
    開封第一講書人閱讀 157,570評論 0 348
  • 文/不壞的土叔 我叫張陵哮幢,是天一觀的道長。 經(jīng)常有香客問我志珍,道長橙垢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,535評論 1 284
  • 正文 為了忘掉前任伦糯,我火速辦了婚禮柜某,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘敛纲。我一直安慰自己喂击,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,650評論 6 386
  • 文/花漫 我一把揭開白布淤翔。 她就那樣靜靜地躺著翰绊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪旁壮。 梳的紋絲不亂的頭發(fā)上监嗜,一...
    開封第一講書人閱讀 49,850評論 1 290
  • 那天,我揣著相機(jī)與錄音抡谐,去河邊找鬼裁奇。 笑死,一個(gè)胖子當(dāng)著我的面吹牛麦撵,可吹牛的內(nèi)容都是我干的刽肠。 我是一名探鬼主播溃肪,決...
    沈念sama閱讀 39,006評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼音五!你這毒婦竟也來了乍惊?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,747評論 0 268
  • 序言:老撾萬榮一對情侶失蹤放仗,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后撬碟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體诞挨,經(jīng)...
    沈念sama閱讀 44,207評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,536評論 2 327
  • 正文 我和宋清朗相戀三年呢蛤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了惶傻。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,683評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡其障,死狀恐怖银室,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情励翼,我是刑警寧澤蜈敢,帶...
    沈念sama閱讀 34,342評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站汽抚,受9級特大地震影響抓狭,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜造烁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,964評論 3 315
  • 文/蒙蒙 一否过、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧惭蟋,春花似錦苗桂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至惹谐,卻和暖如春持偏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背氨肌。 一陣腳步聲響...
    開封第一講書人閱讀 32,004評論 1 266
  • 我被黑心中介騙來泰國打工鸿秆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人怎囚。 一個(gè)月前我還...
    沈念sama閱讀 46,401評論 2 360
  • 正文 我出身青樓卿叽,卻偏偏與公主長得像桥胞,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子考婴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,566評論 2 349

推薦閱讀更多精彩內(nèi)容

  • vue概述 在官方文檔中贩虾,有一句話對Vue的定位說的很明確:Vue.js 的核心是一個(gè)允許采用簡潔的模板語法來聲明...
    li4065閱讀 7,193評論 0 25
  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內(nèi)容,還有我對于 Vue 1.0 印象不深的內(nèi)容沥阱。關(guān)于...
    云之外閱讀 5,046評論 0 29
  • 文章首發(fā)于個(gè)人博客 前言 使用vue的時(shí)候經(jīng)常會(huì)遇到一些問題,其實(shí)仔細(xì)閱讀查閱官方文檔,就會(huì)發(fā)現(xiàn)文檔中已提到一些格...
    IOneStar閱讀 4,874評論 1 28
  • 1.安裝 可以簡單地在頁面引入Vue.js作為獨(dú)立版本缎罢,Vue即被注冊為全局變量,可以在頁面使用了考杉。 如果希望搭建...
    Awey閱讀 11,002評論 4 129
  • 到達(dá)桂林后崇棠,突然多出了大把時(shí)間自由支配咽袜。稍事休息后,我動(dòng)身前往正陽路步行街枕稀。 因?yàn)槭浅鰜硗嫜玻幌氚褧r(shí)間耗在路上,所...
    我好像沒見過你閱讀 316評論 0 2