計(jì)算屬性和觀察者

1.計(jì)算屬性

為避免模板內(nèi)嵌表達(dá)式過于復(fù)雜應(yīng)使用計(jì)算屬性代替

<div>{{myMessage}}</div>
var app = new Vue({
    el: "#app",
    data: {
        message: "lulu"
    },
    computed:{
        //聲明一個(gè)計(jì)算屬性myMessage
        myMessage: function () {
            //聲明依賴message,易于測(cè)試推理
            return this.message.toUpperCase();
        }
    }
});
  • 計(jì)算屬性基于其依賴進(jìn)行緩存,只有在依賴發(fā)生改變時(shí)才會(huì)重新求值,優(yōu)于使用method
  • 當(dāng)有一些數(shù)據(jù)需要隨其他數(shù)據(jù)變動(dòng)時(shí),優(yōu)于使用watch

計(jì)算屬性默認(rèn)只有g(shù)etter,但也可以添加setter

var app = new Vue({
    el: "#app",
    data: {
        message: "lulu",
    },
    computed: {
        myMessage: {
            // getter
            get: function () {
                return this.message.toUpperCase();
            },
            // setter
            set: function (newValue) {
                this.message = newValue;
            }
        }
    }
});
//設(shè)置計(jì)算屬性myMessage導(dǎo)致message更新
app.myMessage = "lululu";

2.觀察者watch

Vue通過watch提供一個(gè)更通用的方法,響應(yīng)數(shù)據(jù)變化


var app = new Vue({
    el: "#app",
    data: {
        message: "",
        searchKey: ""
    },
    watch: {
        //searchKey變化就會(huì)執(zhí)行函數(shù)
        searchKey: function (newValue) {
            this.message = "Waiting...";
            //一個(gè)異步或開銷較大的操作,計(jì)算屬性無法做到
            this.search();
        }
    },
    methods: {
        search: _.debounce(function(){
        }, 500)
    }
});
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 計(jì)算屬性 ? 直接在模板內(nèi)的嵌入表達(dá)式是非常便利的,但他們實(shí)際上是用于簡(jiǎn)單運(yùn)算的,在實(shí)際開發(fā)中很少使用,因?yàn)樵?..
    Husbin閱讀 453評(píng)論 0 0
  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內(nèi)容,還有我對(duì)于 Vue 1.0 印象不深的內(nèi)容。關(guān)于...
    云之外閱讀 5,185評(píng)論 0 29
  • 一. 計(jì)算屬性 {{ message.split(' ') . reverse( ) . join(' ') }}...
    竹溪穆褕閱讀 287評(píng)論 0 1
  • 這方面的文章很多,但是我感覺很多寫的比較抽象,本文會(huì)通過舉例更詳細(xì)的解釋。(此文面向的Vue新手們,如果你是個(gè)大牛...
    Ivy_2016閱讀 15,584評(píng)論 8 63
  • 每個(gè)人的青春都有一段懵懵懂懂而又青澀的感情,它在我們心里萌動(dòng)生芽,總讓我們?cè)诓唤?jīng)意的一瞬間怦然心動(dòng)。 ...
    烈酒清茶閱讀 108評(píng)論 0 0

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