通俗來說, 1. computed是在HTML DOM加載後立刻執行的,如賦值; 2. methods則必需要有必定的觸發條件才能執行,如點擊事件; 3. watch它用於觀察Vue實例上的數據變更。對應一個對象,鍵是觀察表達式,值是對應回調。值也能夠是方法名,或者是對象,包含選項。 因此他們的執行順序爲:默認加載的時候先computed再watch,不執行methods;等觸發某一事件後,則是:先methods再watch。
computed稱爲計算屬性,顧名思義,計算就要返回一個計算的結果,因此,當咱們要處理大量的邏輯,可是最後要取得最後的結果的時候能夠用computed。瀏覽器
簡單示例: 要求:
<input type="text v-model="num1"><input type="text v-model="num2">
如今要返回num1和num2的和;
<script> new Vue({ el:"#box", data:{ num1:0, num2:0 } computed:{ result:function(){ return this.num1 + this.num2 // 計算屬性必須有一個返回值 } } }) </script>
methods:是方法的意思,在js中,咱們把一些函數叫作方法,通常狀況下,要觸發這個方法就要執行,要執行就要有一個源來觸發,因此就須要一個事件源,這是和computed的一點不一樣之處。緩存
methods的示例:要求:
<button @click="do()">點擊彈出<\/button> <script> new Vue({ el:"#box", data:{ num1:0, num2:0 } methods:{ do:function(){ alert('ok') //這裏根據狀況,能夠返回有返回值也能夠沒有返回值。 } } }) </script>
<div id="example"> <p>Original message: "{{ message }}"</p> <p>Computed reversed message: "{{ reversedMessage }}"</p> </div> var vm = new Vue({ el: '#example', data: { message: 'Hello' }, computed: { reversedMessage: function () { return this.message.split('').reverse().join('') } }, methods: { reverseMessage: function () { return this.message.split('').reverse().join('') } } })