vue.js2.0如何把子组件触发的事件更方便地传递给祖父组件。

近来学习组件二次封装时碰到一个问题,假设我要把element-ui的el-table封装成ele-table组件,那么我势必要使得a组件传递给ele-table组件的参数能够顺利传递给el-table(这个好解决,用v-bind),另外也要使得el-table触发的事件能够经ele-table组件顺利传递给a组件去做处理。
按以往的做法无非就是在组件上捕获事件,然后再this.$emit往上传,但是事件一多便成了酱紫:

clipboard.png

(el-table的事件有十六个)即使将处理方法合并,在template依旧会显得有些肿胀,想请教大神是否有简单一些的办法可以完成这项需求呢?

阅读 4.7k
3 个回答

试着用vueX统一管理呢

el-table不同的事件有不同的作用。如果做了合并处理,事件的作用就不单一,是否会引起语义不清晰。例外el-table作为通用组件,涵盖了很多场景。如果单从自己的业务出发,根据自己的业务场景封装组件,或许事件就没有那么多。

你一定不知道 method 还可以作为 prop 传递给组件:https://jsfiddle.net/KingMari...

或者这样,eventHandlers 对象 prop 用来传递一个或多个事件响应方法:https://jsfiddle.net/KingMari...
设置 Vue.config.silent = true 可以隐藏错误提示(非必需,生产环境下 warn 自然不显示)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题