Vue 2.0 計算屬性

計算屬性


計算屬性:顧明思議就是 計算并返回計算的結果 ,所以鸣峭,當我們要處理大量的邏輯论皆,但是最后只需要取得最后的結果的時候可以用 計算屬性 computed

在模板中放入太多的邏輯會讓模板過重且難以維護。例如:

<div id="example">
  {{ message.split('').reverse().join('') }}
</div>

這是一個簡單的 字符翻轉 處理蹋凝,但是我們自己在插槽里進行邏輯處理此時模板看起來將不再簡單柠硕,因此我們需要用計算屬性工禾,我們只需要把計算完的值展示就可以了,至于處理的邏輯我們需要在 computed 選項里進行

例如:

<div id="example">
  <p>原始數據: "{{ message }}"</p>
  <p>計算過的數據: "{{ reversedMessage }}"</p>
</div>
var vm = new Vue({
  el: '#example',
  data: {
    message: 'Hello'
  },
  computed: {
    // 計算屬性的 getter  (讀然热帷)
    reversedMessage: function () {
      // `this` 指向 vm 實例
      return this.message.split('').reverse().join('')
    }
  }
})

查看計算屬性演示

計算屬性 get 與 set (讀取與設置)

計算屬性默認只有get方法只能讀取闻葵,如果需要可以添加set方法

computed:{
  add:function(){
    return this.msg + 1
  }
}
上面代碼等于下面的
computed:{
  add:{
     get:function(){
      
      }
  }
}

首先我們驗證下 計算屬性只有get方法,只能讀取不嫩設置值癣丧。
我們 創(chuàng)建一個 按鈕 點擊將 計算屬性值改變槽畔,如果沒有變則說明 計算屬性默認只有get方法不能設置值

{{reversemsg}}
<button @click="reversemsg ='helloWorld'">將reversemsg改為 helloWorld</button>
var vm = new Vue({
    el:'#app',
    data:{
        msg:'hello',
    },
    computed:{
        reversemsg:function(){ //默認get方法
            return this.msg.split('').reverse().join('')
        }
    }
})

執(zhí)行結果,點擊按鈕 計算屬性 reversemsg 值根本沒變
查看演示

接下來我們?yōu)橛嬎銓傩蕴砑?set 方法

{{reversemsg2}}
<button @click="reversemsg2 ='你好世界'">將reversemsg2改為 你好世界</button>
var vm = new Vue({
    el:'#app',
    data:{
        msg2:'你好',
    },
    computed:{
        reversemsg2:{ //添加set方法
            get:function(){
                return this.msg2.split('').reverse().join('')
            },
            set:function(val){
                console.log(val) //val 就是 設置計算屬性的值
                    return this.msg2 = val //改變計算屬性值其實就是改變源數據的值
            }
        }
    }
})

執(zhí)行結果胁编,點擊按鈕 計算屬性 reversemsg2 值改成了 你好世界
查看演示

總結

  1. 什么情況下需要使用計算屬性
    當我們要處理大量的邏輯厢钧,但是最后只需要取得最后的結果的時候可以用 計算屬性
  2. 如何使用計算屬性
    創(chuàng)建計算屬性需要在 vue 實例 computed 選項里鳞尔,該選項是一個對象,里面?zhèn)魅雑son對象 key:函數,return出計算結果早直,該函數默認只有get方法只能讀取不能設置
comouted:{
  fn1:function(){
    return 邏輯處理
  },
  fn2:function(){
    return 邏輯處理
  }
...
}

如需設置值可傳入 set方法,該函數有一個參數就是 改變計算屬性的值寥假,

computed:{
  fn:{
    get:function(){
      return
    },
    set:function(val){
      //val 就是設置改變屬性的值 比如 fn = 1, val就是1
    }
  }
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末霞扬,一起剝皮案震驚了整個濱河市糕韧,隨后出現的幾起案子,更是在濱河造成了極大的恐慌祥得,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蒋得,死亡現場離奇詭異级及,居然都是意外死亡,警方通過查閱死者的電腦和手機额衙,發(fā)現死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進店門饮焦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人窍侧,你說我怎么就攤上這事县踢。” “怎么了伟件?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵硼啤,是天一觀的道長。 經常有香客問我斧账,道長谴返,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任咧织,我火速辦了婚禮嗓袱,結果婚禮上,老公的妹妹穿的比我還像新娘习绢。我一直安慰自己渠抹,他們只是感情好,可當我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布闪萄。 她就那樣靜靜地躺著梧却,像睡著了一般。 火紅的嫁衣襯著肌膚如雪败去。 梳的紋絲不亂的頭發(fā)上篮幢,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天,我揣著相機與錄音为迈,去河邊找鬼三椿。 笑死缺菌,一個胖子當著我的面吹牛,可吹牛的內容都是我干的搜锰。 我是一名探鬼主播伴郁,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蛋叼!你這毒婦竟也來了焊傅?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤狈涮,失蹤者是張志新(化名)和其女友劉穎狐胎,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體歌馍,經...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡握巢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了松却。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片暴浦。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖晓锻,靈堂內的尸體忽然破棺而出歌焦,到底是詐尸還是另有隱情,我是刑警寧澤砚哆,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布独撇,位于F島的核電站,受9級特大地震影響躁锁,放射性物質發(fā)生泄漏券勺。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一灿里、第九天 我趴在偏房一處隱蔽的房頂上張望关炼。 院中可真熱鬧,春花似錦匣吊、人聲如沸儒拂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽社痛。三九已至,卻和暖如春命雀,著一層夾襖步出監(jiān)牢的瞬間蒜哀,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工吏砂, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留撵儿,地道東北人乘客。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像淀歇,于是被迫代替她去往敵國和親易核。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,828評論 2 345

推薦閱讀更多精彩內容