vue 页面中使用bus添加监听函数,在上层页面调用不到解决办法
最近项目中兄弟组建中间或者多层级组件中使用bus调用发现高层级调用低层级方法时,必须要等低层级渲染结束以后才能使用
导致很多时候调用不成功
例如:
app.vue中使用this.$bus.$emit('xxx')
而函数在下下下层级中的created(this.$bud.$on('xxx',()={vvv}))
这样就会导致调用数据的时候app无法调用到函数xxx
即便加this.$nextTick() 也不行,虽然添加setTimeOut可以,但是会存在逻辑风险,比如当渲染过慢导致等,所以个人觉得这种写法不妥,有没有大佬对于这种问题有更好的解决方案呢??
及简单又可以避免风险的呢?
可以使用我写的小工具event-watcher。
子孙元素:
祖先元素:
这两个方法里的第三个参数约定:如果
emit
先于on
调用,最后一个emit
的内容将被缓存,在on
调用之后立即触发。