请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

封装组件里$listener中的input与$emit('input')

对el-input进行封装的时候,发现封装的组件里通过$listener也能获取到v-model语法糖中的input方法。这是不是说明修改value的时候我可以用这个$listener中的input 代替$emit('input')了呢?

正在回答 回答被采纳积分+3

1回答

ustbhuangyi 2019-04-01 11:01:05

虽然 $listener 包含了父作用域中的 (不含 .native 修饰器的) v-on 事件监听器,但我建议还是要按规范来吧,使用 $emit 的方式

0 回复 有任何疑惑可以回复我~
  • 提问者 慕仔8147619 #1
    最开始也是用emit方法的,但这样也会触发手动添加的input,因为自己封装的组件在value变成不满足规定格式的值时,要把它修正回来,当父组件是通过js修改了value时,就会出现这个问题。  如果 想在保持外部调用的方式与使用input相同的同时,兼容@input事件,有可能实现吗。
    回复 有任何疑惑可以回复我~ 2019-04-01 12:49:26
  • ustbhuangyi 回复 提问者 慕仔8147619 #2
    参考:https://cn.vuejs.org/v2/guide/components-custom-events.html#%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E7%9A%84-v-model,可以修改事件名
    回复 有任何疑惑可以回复我~ 2019-04-01 14:41:02
  • 提问者 慕仔8147619 回复 ustbhuangyi #3
    就像在掉用组件的时候不写@input而是@input1吗?有没有办法让emit只调用多个方法中的一个呢
    回复 有任何疑惑可以回复我~ 2019-04-01 19:13:24
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信