Vue中的計算屬性使用,動態賦值property

2021-10-07 01:33:29 字數 1420 閱讀 2417

在使用vue時候,可能會發現乙個問題:我們不想在data中給某個property賦上固定的預設值,而是想賦值一些經過計算的property值,甚至使用到了其他property,第一時間可能會想到這麼寫,如下

錯誤示例:

selectphotolabel:

this

.photolabels[0]

.text?

this

.photolabels[0]

.text:

"complete"

//**lable

可以看到我們在data中賦值selectphotolabel時,使用到了photolabels集合進行條件表示式計算,但是這裡忽略了乙個問題,我們是無法在宣告property時用this.property的方式直接將其他property賦值過來的,所以使用這段**selectphotolabel的值始終為undefined。

那怎麼解決呢?

- 使用計算屬性

說起計算屬性,最先想到的一定是computed和watch,這也是vue中最常用的兩種計算屬性,二者原則上都能實現動態賦值的功能,但也存在一些不同點,接下來我們看看這兩個計算屬性的區別。

computed:

1.computed用來監控自己定義的變數,該變數不在data裡面宣告,直接在computed裡面定義,然後就可以在頁面上進行雙向資料繫結展示出結果或者用作其他處理;

2.computed比較適合對多個變數或者物件進行處理後返回乙個結果值,也就是多個變數中的某乙個值發生了變化則我們監控的這個值也就會發生變化。

watch:

1.watch主要用於監控vue例項的變化,它監控的變數當然必須在data裡面宣告才可以,它可以監控乙個變數,也可以是乙個物件;

2.watch一般用於監控路由、input輸入框的值特殊處理等等,它比較適合的場景是乙個資料影響多個資料

根據業務邏輯需求和二者的特點,我們此處應該使用computed,**如下:

computed:

,//**lable

selectphotolabel:

,set

(val)}}

,

computed中的針對屬性的賦值方法又會有兩種寫法,第一種是常規方法,直接return值便可以,第二種則是使用get,set方法,在get中為此屬性賦值,在set中定義值改變時需要做的操作。set中的引數val就是改變後的值。

這樣我們便實現了給property賦值時需要呼叫其他property的功能,完美解決了問題。

vue中的計算屬性

使用計算屬性實現模糊查詢功能 text v model mytext3 for data in getmydatalist li ul div 這個getmydatalist就是計算屬性,所以計算屬性是可以當作data中的資料使用的。getmydatalist 這樣子的寫法形成了模糊查詢的結果跟my...

Vue的計算屬性

vue模板 可以用來展示一些資料,但是遇到資料的邏輯比較複雜的時候,此時要怎麼辦呢?這個時候就會用到vue的計算屬性 基本用法 計算屬性也是用來儲存資料的,常用於邏輯比較複雜的計算但有著一下幾個特點 a 所有的計算屬性一般以函式的形式寫在vue例項的computed選項中的,並最終返回計算後的結果。...

VUE的計算屬性

二 computed的特性?總結computed 是計算乙個新的屬性,並將該屬性掛載到 vue 例項上 computed屬性主要是解決專案中的計算問題 如下 示例 new vue computed script 上面我們建立了乙個計算屬性,來看一下它的語法結構。computed存在於乙個vue例項中...