- Vue.js从入门到项目实践(超值版)
- 聚慕课教育研发中心编著
- 463字
- 2022-07-29 14:27:40
4.1.2 方法
methods:通过methods对象定义方法,并使用v-on指令来监听DOM事件。
<button v-on:click="alert">alert</button> new Vue({ el: '#app', data:{ a:1 }, methods:{ alert:function(){ alert(this.a) } } })
自定义事件在初始化的时候传入events对象,通过实例的$emit方法进行触发。而在Vue.js 2.0中则废除了events选项属性,不再支持事件广播这类特性,所以直接使用Vue实例的全局方法$on/$emit(),或者使用插件Vuex来处理即可。
通过调用表达式中的methods也可以达到同样的效果。代码如下:
提示:不应该使用箭头函数来定义methods函数。
运行的效果如图4-3所示。
图4-3 methods运行效果图(一)
从最终的结果来看,两种方式确实是相同的。然而不同的是,计算属性是基于它们的依赖进行缓存的。计算属性只有在它的相关依赖发生改变时才会重新求值。这意味着,只要message还没有发生改变,多次访问reversedMessage计算属性会立即返回以前的计算结果,而不必再次执行函数。相比而言,只要发生重新渲染,methods调用总会执行该函数。
代码如下:
运行的效果如图4-4所示。
图4-4 methods运行效果图(二)
提示:假设有一个性能开销比较大的商城A,它需要遍历一个极大的数组和做大量的计算,来获取可能存在的其他商品(赖于A)。如果没有缓存,将不可避免地多次执行A的getter。如果不希望有缓存,则可以用methods替代。