为了账号安全,请及时绑定邮箱和手机立即绑定

vue 子组件emit没效果各位有什么建议?

vue 子组件emit没效果各位有什么建议?

温温酱 2019-08-21 13:48:58
请问下为啥在模板里,子组件调用this.$emit,父组件触发不了方法呢?我debugger看events里注册了那个事件然而并没有触发是为啥勒https://jsfiddle.net/BiggerKa...点击点我啊没有出现alert的效果
查看完整描述

2 回答

?
守候你守候我

TA贡献1802条经验 获得超10个赞

事件名称不允许用驼峰式,fiddle里看不出来,在浏览器里Vue会发出警告中断执行,模板和触发的方法名称都改成小写就可以成功,亲测可行。
//template
//script
methods:{
handleTip:function(){
this.$emit('handle-tip','haha')
}
}
                            
查看完整回答
反对 回复 2019-08-21
?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

事件名不同于组件和prop,事件名不存在任何自动化的大小写转换。而是触发的事件名需要完全匹配监听这个事件所用的名称。举个例子,如果触发一个camelCase名字的事件:
this.$emit('myEvent')则监听这个名字的kebab-case版本是不会有任何效果的:
不同于组件和prop,事件名不会被用作一个JavaScript变量名或属性名,所以就没有理由使用camelCase或PascalCase了。并且v-on事件监听器在DOM模板中会被自动转换为全小写(因为HTML是大小写不敏感的),所以v-on:myEvent将会变成v-on:myevent——导致myEvent不可能被监听到。
因此,我们推荐你始终使用kebab-case的事件名。
                            
查看完整回答
反对 回复 2019-08-21
  • 2 回答
  • 0 关注
  • 490 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号