5刑峡、Vue_計算屬性computed洋闽、監(jiān)聽屬性watch

計算屬性:computed

之前例子中,使用過vue的methods突梦,computed和它的效果是一樣的诫舅。只不過computed是基于它的依賴緩存,只有相關(guān)依賴發(fā)生改變時才會重新取值宫患。而methods在重新渲染的時候刊懈,函數(shù)總會重新調(diào)用執(zhí)行
所以說,使用computed性能會更好撮奏。但是俏讹,如果不希望緩存時,就使用methods

  • 字符串反轉(zhuǎn)例子
<template>
    <div>
        <p>{{msgs}}</p>
        <p>反轉(zhuǎn)后的值:{{reversedMessage}}</p>
    </div>
</template>

<script>
    export default {
        name: "computed",
        data() {
            return {
                msgs: '反轉(zhuǎn)我吧'
            }
        },
        // 計算屬性
        computed: {
            // 默認(rèn)是getter
            reversedMessage() {
                return  this.msgs.split('').reverse().join('')
            }
        }
    }
</script>

<style scoped>

</style>
  • computed默認(rèn)只有getter畜吊,不過在需要的時候,也可以定義一個setter
    例子户矢,創(chuàng)建一個htnl文件:
var vm = new Vue({
  el: '#app',
  data: {
    name: 'lzl',
    age: 18
  },
  computed: {
    site: {
      // getter
      get: function () {
        return this.name + ' ' + this.age
      },
      // setter
      set: function (newValue) {
        var values= newValue.split(' ')
        this.name = values[0]
        this.age= values[values.length - 1]
      }
    }
  }
})
// 調(diào)用 setter玲献, vm.name 和 vm.age也會被對應(yīng)更新
vm.site = 'zl 20';
document.write('name: ' + vm.name);
document.write('<br>');
document.write('age: ' + vm.age);

監(jiān)聽屬性:watch

  • watch監(jiān)聽屬性:監(jiān)聽數(shù)據(jù)的變化,然后觸發(fā)對應(yīng)的方法
  • 類型:{ [key: string]: string | Function | Object | Array }
  • [key: string]是一個對象梯浪,鍵是需要觀察的表達式捌年,值是對應(yīng)回調(diào)函數(shù)。值也可以是方法名挂洛,或者包含選項的對象礼预。Vue 實例將會在實例化時調(diào)用 $watch(),遍歷 watch 對象的每一個屬性虏劲。
  • 場景:可以對項目的一些屬性進行調(diào)試
  • 例子:分秒之間的轉(zhuǎn)換托酸,并且文字提示,輸入值就觸發(fā)
<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <title>watch</title>
    <script src="https://cdn.staticfile.org/vue/2.4.2/vue.min.js"></script>
</head>
<body>
<div id="values">
    <!-- 綁定屬性m和s -->
    分:<input type="text"  v-model="m"></input><br/>
    秒:<input type="text"  v-model="s"></input>
</div>
<p id="info"></p>

<script type="text/javascript">
    var vm = new Vue(
        {
            el: '#values',
            data: {
                m: 0,
                s: 0
            },
            // 監(jiān)聽
            watch: {
            // watch對象中創(chuàng)建兩個方法:

                // 觸發(fā)后柒巫,修改m
                m: function (val) {
                    this.m = val;
                    this.s = this.m * 60;
                },
                // 觸發(fā)后励堡,修改s
                s: function (val) {
                    this.m = val / 60;
                    this.s = val;
                }
            }
        }
    );
    // $watch是實例方法;如果watch監(jiān)聽中的m發(fā)生改變堡掏,則執(zhí)行函數(shù)
    vm.$watch('m', function (arg1, arg2) {
        // 顯示結(jié)果
        document.getElementById('info').innerHTML = "修改前的值是:" + arg2 + "应结,修改后的值是:" + arg1
    })

</script>
</body>
</html>

結(jié)果:


watch
  • 增加值按鈕,增加就觸發(fā)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>counter</title>
    <script src="https://cdn.staticfile.org/vue/2.4.2/vue.min.js"></script>

</head>
<body>
    <div id="counter">
        <p>值:{{ value }}</p>
        <button @click="value++">加1</button>
    </div>
    <script type="text/javascript">
        var vm = new Vue({
            el: '#counter',
            data:{
                value:1
            }
        });
        vm.$watch('value', function (newvalue, oldvalue) {
            alert('增加前的值是:'+oldvalue + '泉唁,增加后的值是:'+ newvalue )
        });
    </script>
</body>
</html>

結(jié)果:


image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鹅龄,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子亭畜,更是在濱河造成了極大的恐慌扮休,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贱案,死亡現(xiàn)場離奇詭異肛炮,居然都是意外死亡止吐,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門侨糟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來碍扔,“玉大人,你說我怎么就攤上這事秕重〔煌” “怎么了?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵溶耘,是天一觀的道長二拐。 經(jīng)常有香客問我,道長凳兵,這世上最難降的妖魔是什么百新? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮庐扫,結(jié)果婚禮上饭望,老公的妹妹穿的比我還像新娘。我一直安慰自己形庭,他們只是感情好铅辞,可當(dāng)我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著萨醒,像睡著了一般斟珊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上富纸,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天囤踩,我揣著相機與錄音,去河邊找鬼胜嗓。 笑死高职,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的辞州。 我是一名探鬼主播怔锌,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼变过!你這毒婦竟也來了埃元?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤媚狰,失蹤者是張志新(化名)和其女友劉穎岛杀,沒想到半個月后脯丝,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體口锭,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡哗脖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年闸盔,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片遗锣。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡货裹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出精偿,到底是詐尸還是另有隱情弧圆,我是刑警寧澤,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布笔咽,位于F島的核電站搔预,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏叶组。R本人自食惡果不足惜拯田,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望甩十。 院中可真熱鬧勿锅,春花似錦、人聲如沸枣氧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽达吞。三九已至,卻和暖如春荒典,著一層夾襖步出監(jiān)牢的瞬間酪劫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工寺董, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留覆糟,地道東北人。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓遮咖,卻偏偏與公主長得像滩字,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子御吞,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,611評論 2 353

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