模板內的表示式非常便利,但是更適用於簡單運算的。放入太多的邏輯會讓模板過重且難以維護。例如:
}<
/div>
上面的表示式中包含了3個操作,看起來也不清晰,所以這種情況下,應該使用vue的計算屬性。
乙個計算屬性裡可以完成各種複雜的邏輯,包括運算、函式呼叫等,只要最終返回乙個結果就可以。
上面的例子用計算屬性可以寫成:
"example"
>
}<
/p>
//這裡把複雜處理放在計算屬性裡
computed:
}<
/p>
<
/div>
var vm =
newvue(,
computed:}}
);
計算屬性還可以依賴多個vue 例項的資料,只要其中任乙個資料變化,計算屬性就會重新執行,檢視也會更新。例:
>
"add()"
>button<
/button>
}<
/div>
<
/div>
<
/body>
new
vue(
, mun2:},
computed:},
methods:}}
);補充:
1. 計算屬性可以依賴其他計算屬性;
2. 計算屬性不僅可以依賴當前vue 例項的資料,還可以依賴其他例項的資料例:
>
<
/div>
>
}<
/div>
new
vue(})
;new
vue(}}
);計算屬性包含乙個getter屬性 和乙個setter屬性 ,一般我們都是使用計算屬性的預設用法, 利用了getter 來讀取。
當需要手動修改計算屬性的值就像修改乙個普通資料那樣時,就需要使用setter屬性,觸發setter 函式,執行一些自定義的操作,例如:
var vm =
newvue(,
computed:
,// setter
set:
function
(newvalue)}}
});//現在再執行 vm.newname = 'byu doe' 時,setter 會被呼叫,vm.firstname 和 vm.lastname 也會相應地被更新。
補充:很多時候我們只會用預設的getter 方法來讀取乙個計算屬性,很少用到setter,所以在宣告乙個計算屬性時,可以直接使用預設的寫法,不必將getter 和setter 都宣告。
在上面的例子裡,我們通過在表示式中呼叫方法也可以達到同樣的效果,兩種方式最終的結果是完全相同的。
}<
/div>
// 在元件中
methods:
}
補充:computed與methods的使用區別只有乙個,methods使用reversetitle()取值,computed使用reversetitle取值。
更重要的不同是,計算屬性是基於它的依賴進行快取的。也就是說計算屬性只有在它的相關依賴發生改變時才會重新求值。
而在methods中,不管它依賴的值有沒有發生變化,她都會再次計算執行
2020 09 18 vue學習筆記 計算屬性
模板內的表示式非常便利,但是設計它們的初衷是用於簡單運算的。在模板中放入太多的邏輯會讓模板過重且難以維護。例如 example div 在這個地方,模板不再是簡單的宣告式邏輯。你必須看一段時間才能意識到,這裡是想要顯示變數 message 的翻轉字串。當你想要在模板中多包含此處的翻轉字串時,就會更加...
Vue學習筆記(3)關於Vue的計算屬性
通過之前的學習,我們學習了模板之中的文字插值,這可以很好的實現資料的展示與繫結,但是這樣的展示是有點缺陷的,比如當你想把資料做一定的複雜處理過後才展示的時候,當然你也可以繼續地使用模板,可是這會顯得特別難以維護。vue當然也是給出了解決方案,這就是計算屬性,先給出 在此我們利用了計算屬性來對mess...
Vue 學習筆記 css屬性計算的問題
今天在使用vue時遇到乙個問題 在切換css內聯屬性時某些特殊屬性的計算會有問題,無法得到預期的結果。例子 上面的頁面中展示了這個問題的表現,當原始樣式是border bottom color 這樣的 css,且切換的css是他對應的簡寫,如broder 時,取消這個切換操作無法恢復到原始的css樣...