通俗来说, 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('') } } })