vue自定义事件

268 阅读1分钟

事件名

事件名不存在任何自动化的大小写转换,并且触发的事件名需要完全匹配监听这个事件所用的名称

举个栗子:(不会有效果)

//子组件
this.$emit('myEvent',eventName) //eventName是子组件下自定义的事件名,也可以是其他值
<!--父组件-->
<my-component v-on:my-event="doSomething"></my-component>

不同于组件和 prop,事件名不会被用作一个 JavaScript 变量名或 property 名,所以就没有理由使用 camelCase(驼峰命名) 或 PascalCase(帕斯卡命名) 了

帕斯卡命名法与骆驼命名法类似。只不过骆驼命名法是首字母小写,而帕斯卡命名法是首字母大写。 并且 v-on 事件监听器在 DOM 模板中会被自动转换为全小写 (因为 HTML 是大小写不敏感的),所以 v-on:myEvent 将会变成 v-on:myevent——导致 myEvent 不可能被监听到。
因此,推荐始终使用 kebab-case(短横线命名)的事件名

自定义组件的 v-model

image.png 这里的 lovingVue 的值将会传入这个名为 checked 的 prop。同时当 <base-checkbox> 触发一个 change 事件并附带一个新的值的时候,这个 lovingVue 的 property 将会被更新。