<div
id="example"
>
<
p>original message: "}"
p>
<
p>computed reversed message: "}"
p>
div>
var vm = new vue(,
computed:
}})結果:original message: "hello"
computed reversed message: "olleh"
這裡我們宣告了乙個計算屬性reversedmessage
。我們提供的函式將用作 propertyvm.reversedmessage
的 getter 函式:
console.log(vm.reversedmessage) // => 'olleh'vm.message = 'goodbye'
console.log(vm.reversedmessage) // => 'eybdoog'
vm.reversedmessage
的值始終取決於vm.message
的值。
vue 知道vm.reversedmessage
依賴於vm.message
,因此當vm.message
發生改變時,所有依賴vm.reversedmessage
的繫結也會更新。而且最妙的是我們已經以宣告的方式建立了這種依賴關係:計算屬性的 getter 函式是沒有*** (side effect) 的,這使它更易於測試和理解。
方法:
<p>reversed message: "}"
p>
// 在元件中
methods:
}
方法:每當觸發重新渲染時,呼叫方法將總會再次執行函式。
計算屬性:多次訪問reversedmessage
計算屬性會立即返回之前的計算結果,而不必再次執行函式。
我們為什麼需要快取?
假設我們有乙個效能開銷比較大的計算屬性 a,它需要遍歷乙個巨大的陣列並做大量的計算。然後我們可能有其他的計算屬性依賴於 a。如果沒有快取,我們將不可避免的多次執行 a 的 getter!如果你不希望有快取,請用方法來替代。
偵聽屬性:觀察和響應 vue 例項上的資料變動
<div
id="demo"
>}
div>
var vm = new vue(,
watch: ,
lastname: function (val)
}})
計算屬性版本
var vm = new vue(,computed:
}})
計算屬性預設只有 getter,不過在需要時你也可以提供乙個 setter:
computed: ,// setter
set: function (newvalue)
}}
現在再執行vm.fullname = 'john doe'
時,setter 會被呼叫,vm.firstname
和vm.lastname
也會相應地被更新。
雖然計算屬性在大多數情況下更合適,但有時也需要乙個自定義的偵聽器。這就是為什麼 vue 通過watch
選項提供了乙個更通用的方法,來響應資料的變化。
當需要在資料變化時執行非同步或開銷較大的操作時,這個方式是最有用的。
例如:
<div
id="watch-example"
>
<
p>
ask a yes/no question:
<
input
v-model
="question"
>
p>
<
p>}
p>
div>
<
script
src=""
>
script
>
<
script
src=""
>
script
>
<
script
>
varwatchexamplevm
=new
vue(,
watch:
},created:
function
() ,
methods:
this
.answer ='
thinking...
'var
vm =
this
axios.get(
'').then(
function
(response) )
.catch
(function
(error) )
}}})
script
>
結果:ask a yes/no question:
questions usually contain a question mark. ;-)
在這個示例中,使用watch
選項允許我們執行非同步操作 (訪問乙個 api),限制我們執行該操作的頻率,並在我們得到最終結果前,設定中間狀態。這些都是計算屬性無法做到的。
計算屬性和偵聽器
1 計算屬性快取 vs 方法 將乙個函式定義為計算屬性和方法得到的結果是相同的。但不同的是計算屬性是基於它們的依賴進行快取的,只是在相關依賴發生改變時才會重新求值。方法 methods 計算屬性 computed 2 計算屬性 vs 偵聽屬性 偵聽屬性 觀察和響應vue例項上的資料變動 watch ...
計算屬性和偵聽器
1,計算屬性 在 computed 屬性物件中定義計算屬性的方法 在頁面中使用 來顯示計算的結果 通過 getter setter 實現對屬性資料的顯示和監視 計算屬性存在快取,多次讀取只執行一次 getter 計算 通過在表示式中呼叫方法也可以達到同樣的效果 但是,不同的是計算屬性是基於它們的響應...
計算屬性 方法和偵聽器
doctype html en utf 8 計算屬性 方法和偵聽器 title vue.js script head root div newvue 計算屬性 computed script body html 計算屬性在使用的時候會有乙個快取,其依賴的data,在沒有發生變化的時候,計算屬性就不會...