複雜邏輯,模板難以維護
有的時候我們需要在模板中使用資料a,這個時候就需要用到表示式,但是有的地方我們需要對a資料進行一些簡單的處理後才能使用,那麼我們就會在表示式中寫一些js邏輯運算
}
這樣我們的維護就會非常困難,也不便於閱讀
我們就可以在methods裡設定乙個方法,在模板的表示式中使用這個方法
// 在元件中
methods:
}
但是這個時候,只要vm中有資料變化,這個變化的資料可能和我們關注的資料無關,但是vm都會重新渲染模板,這個時候表示式中的方法就會重新執行,大大的影響效能
這個時候其實我們可以使用***裡完成:
在vm例項中設定watch屬性,在裡面通過鍵值對來設定一些監聽,鍵名為資料名,值可以是乙個函式,這個函式在資料改變之後才會執行,兩個引數分別是更改前的值和更改後的值
watch:
}
值還可以是乙個方法名字,當資料改變的時候這個方法會執行
當資料為object的時候,object的鍵值對改變不會被監聽到(陣列的push等方法可以),這個時候需要設定深度監聽:
c:
},
監聽的handler函式前面的這幾種寫法都是在資料變化的時候才會執行,初始化的時候不會執行,但是如果設定immediate為true就可以了
watch:,
num:
}}
我們在回到上面的問題,用***加上immediate屬性就可以做到該效果,但是大家可以看到的是邏輯稍稍有點複雜
我們一般都會用到乙個叫計算屬性的東西來解決:計算屬性就是在例項配置項中通過computed來為vm設定乙個新的資料,而這個新資料會擁有乙個依賴(一條已經存在的資料),當依賴發生變化的時候,新資料也會發生變化
與方法的方式相比,它效能更高,計算屬性是基於它們的依賴進行快取的。計算屬性只有在它的相關依賴發生改變時才會重新求值。相比之下,每當觸發重新渲染時,呼叫方法將總會再次執行函式。
與watch相比,寫起來簡單,邏輯性更清晰,watch一般多用於,根據資料的變化而執行某些動作,而至於這些動作是在幹什麼其實無所謂,而計算屬性更有針對性,根據資料變化而更改另乙個資料
計算屬性也擁有getter和setter,預設寫的是getter,設定setter可以當此計算屬性資料更改的時候去做其他的一些事情,相當於watch這個計算屬性
xm:,
set:function(val)
}
vue 計算屬性
在這裡我覺得講 computed 和methods放在一起討論 更 便於 理解。computed var vm new vue computed methods methods methods和computed從顯示效果是一樣的,但是主要的區別是 1.computer 是存在快取的,在data沒有改...
Vue 計算屬性
計算屬性在處理一些複雜邏輯時是很有用的。模板是為了描述檢視的結構。在模板中放入太多的邏輯會讓模板過重且難以維護。這就是為什麼 vue.js 將繫結表示式限制為乙個表示式。如果需要多於乙個表示式的邏輯,應當使用計算屬性 computed。例項1 反轉字串 例項1中模板複雜,不好理解,現在我們採用計算屬...
Vue計算屬性
計算屬性 在模板中繫結表示式是非常便利的,但是它們實際上只用於簡單的操作。如果需要多於乙個表示式的邏輯,應當使用計算屬性。1.基礎例子 a b js var vm new vue computed 結果 a 1,b 2 這裡我們宣告了乙個計算屬性b。我們提供的函式將用作屬性vm.b的getter。c...