在Vue
中methods
属性用于书写实例的事件处理方法,Vue
在创建实例的时候会自动把methods
绑定到当前实例的this
中,写在mthods
对象中的方法要避免使用「箭头函数」,箭头函数可能会影响到Vue
正确的指向Vue
的实例this
。
let app = {
template: `
<h1>{{ title }}</h1>
<button v-on:click="changeTitle('title')">change title</button>
`,
data() {
return {
title: "This is my title.",
};
},
methods: {
// 不推荐
changeTitle: () => {
this.title = "This is your title.";
},
},
};
在Vue
的模版中,函数名后面紧挨着()
并不是执行符号,()
内可以传递你想要的参数,这个过程会被编译为v-on:click="()=> changeTitle('title')"
。
<button v-on:click="changeTitle('title')">change title</button>
<!-- v-on:click="() => changeTitle('title')" -->
在Vue
的实例中,虽然挂载了methods
对象里面的方法,但是并没有像$data
一样被抛出了,这是因为data
属性被更改的时候$data
也会被更改,所以必须要暴露出来,而methods
本身就是一些方法的集合容器,直接挂载到实例上能够调用就可以了,没必要暴露出来。