公共组件:bar.vue
里面有调用接口的一个方法。
methods: { wishSign() { } }
公共模板:cn.vue
全局调用了bar.vue
import VMbar from '~/components/base/bar';
界面:datail.vue
需求:我想在datail.vue里面的一个点击事件里面触发bar.vue里面的一个方法怎么做了。我用ref也获取不到bar.vue里面的方法。主要是在公共模板:cn.vue全局调用了。我直接获取不到bar.vue里面的方法。怎么才能在datail里面调用wishSign这个方法。
有两个方式:
1. 将全局组件放在某个全局环境中,比如:
这种方式使得组件依赖全局环境中的
$bar
变量。算是比较强耦合的一种结构,不过通常来说也不是太大的问题,只要你不滥用。2. 使用全局的事件总线
以前官方文档介绍过,现在找不到了。大概方案是声明一个 Vue 实例作为全局事件总线,所有注册侦听器都通过它来进行:
这样结构耦合程度更低。