vue 自學筆記 三 計算屬性與偵聽器

2022-03-11 14:31:34 字數 2351 閱讀 5576

一:計算屬性

雖然在模板內使用表示式對屬性進行處理十分便利,例如在小鬍子語法裡寫number + 1實現對資料的簡單處理,但若我們在其中加入大量的**,使得邏輯變重,導致難以維護。例如下面的**,並不是簡單的邏輯處理,而是需要經過一段時間的推算後,才知道在 div 中展示的是怎麼樣的內容

可以在小鬍子語法中直接書寫簡單js

vue 建議我們在其中只做一些簡單的運算即可,那麼當給頁面要繫結的屬性需要大量邏輯處理的時候,我們建議使用計算屬性

1:基礎例子

建立了乙個根節點,我們現在給其掛載例項

明確觀點,  fullname 在呼叫時為屬性

現在我們可以看到頁面有乙個輸入框,受v-model雙向繫結影響,框內會呈現 lastname 的屬性值。我們需要明確一點,雖然 fullname 類似方法,但實際上它是乙個屬性(因此按照屬性使用放在模板語法中),只是沒有定義在 data 中。fullname 的值收到 firstname 和 lastname 影響,當我們改變 lastname 的值時,頁面上的 fullname 也發生了變化。

2:  不使用計算屬性,使用方法進行改寫

借用上面的**,我們可以將 anotherfullname 繫結在頁面上,也可以呈現出和計算屬性一樣的效果。我們可以將同一函式定義為乙個方法而不是乙個計算屬性。兩種方式的最終結果確實是完全相同的。然而,不同的是計算屬性是基於它們的依賴進行快取的。只在相關依賴發生改變時它們才會重新求值。

注意!!!

3 :計算屬性的getter 和setter

vue 官網文件解釋

我的解釋:

計算屬性預設只有 getter 函式,用來獲取新值。當我們不明確的寫出他們的時候,僅做方法寫(如上例子),就只利用了 getter 函式。需要使用 setter 的話,我們要明確寫出。

getter 函式明確的獲取了其依賴的兩個屬性,然後處理返回。當我們要設定 fullname 的屬性值時,會觸發 setter 屬性,引數 value 是我們設定的內容,例子中,setter 被呼叫後,相應的:vm 的 firstname 和 lastname 也會發生改變。

二:偵聽器的使用:

雖然計算屬性在大多數情況下更合適,但有時也需要乙個自定義的偵聽器。這就是為什麼 vue 通過watch選項提供了乙個更通用的方法,來響應資料的變化。當需要在資料變化時執行非同步或開銷較大的操作時,這個方式是最有用的。

watch 始終監視著你寫在裡面的屬性,當它發生變化的時候,就會執行你提前寫好的邏輯處理。我們來看用計算屬性實現的例子,如何被 watch 實現。

使用watch 實現時間偵聽

wtach 監視著 lastname 這個屬性,當我們修改 input 框,導致 data 中的 lastname 變化的時候,觸發了 watch,執行對應的邏輯。

Vue筆記(計算屬性與偵聽器)

lang en charset utf 8 name viewport content width device width,initial scale 1.0 documenttitle head class v model pay1 v model amount1 v model pay2 v ...

vue計算屬性和偵聽屬性

任何複雜的業務邏輯,我們都應當使用計算屬性。在特定條件下,計算屬性要優於方法。計算屬性具有依賴性,計算屬性依賴data中的初始值,只有當初始值改變的時候,計算屬性才會再次計算 計算屬性一般書寫為乙個函式,返回了乙個值,這個值具有依賴性,只有依賴的那個值發生改變,它才會從新計算。原始資料 計算屬性的值...

vue中計算屬性和偵聽屬性

計算屬性 compute是多個輸入乙個輸出。計算屬性和方法不同的是計算屬性會有快取,當計算屬性裡面的變數不發生變化就會呼叫快取而不是在執行一遍,例子 當你的table有一列工資。該列對應的值就可以是endsalary。var vm new vue computed 偵聽屬性 watch 當偵聽的屬性...