Vue 2.0 計算屬性

計算屬性


計算屬性:顧明思議就是 計算并返回計算的結(jié)果 ,所以,當(dāng)我們要處理大量的邏輯,但是最后只需要取得最后的結(jié)果的時候可以用 計算屬性 computed

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

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

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

例如:

<div id="example">
  <p>原始數(shù)據(jù): "{{ message }}"</p>
  <p>計算過的數(shù)據(jù): "{{ 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 (讀取與設(shè)置)

計算屬性默認(rèn)只有g(shù)et方法只能讀取,如果需要可以添加set方法

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

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

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

執(zhí)行結(jié)果,點擊按鈕 計算屬性 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 就是 設(shè)置計算屬性的值
                    return this.msg2 = val //改變計算屬性值其實就是改變源數(shù)據(jù)的值
            }
        }
    }
})

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

總結(jié)

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

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

computed:{
  fn:{
    get:function(){
      return
    },
    set:function(val){
      //val 就是設(shè)置改變屬性的值 比如 fn = 1, val就是1
    }
  }
}
最后編輯于
?著作權(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)容

  • 知道我為什么畏懼成長嗎? 因為長大后的我和你從此再無瓜葛。 一個本不應(yīng)該出現(xiàn)的人出現(xiàn)的時候, 就注定會發(fā)生本不應(yīng)該...
    尋景閱讀 170評論 0 0
  • 《孟子》海說41:自暴自棄與不仁不義 離婁篇:言非禮義,謂之自暴也;吾身不能居仁由義,謂之自棄也。 孟子曰:“自暴...
    弘海先生閱讀 771評論 0 0
  • nowlan閱讀 256評論 0 0

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